小H和游戏

文章目录

    • 题目描述
    • 题解:

传送

时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit
IO Format:%lld

题目描述

小H正在玩一个战略类游戏,她可以操纵己方的飞机对敌国的N座城市(编号为1~N)进行轰炸
敌国的城市形成了一棵树,小H会依次进行Q次轰炸,每次会选择一个城市A进行轰炸,和这座城市距离不超过2的城市都会受损(这里距离的定义是两点最短路径上的边数),轰炸结束后,小H还想知道当前城市A受损的次数
作为游戏的开发者之一,你有义务回答小H的问题 

输入描述:

第1行,两个整数N(1≤N≤750000)、Q(1≤Q≤750000) 第2~N行,每行两个整数表示树上的一条边
第N+1~N+Q行,每行一个整数,表示小H这次轰炸的城市

输出描述:

输出Q行,每行一个整数表示这一次轰炸的城市在此次轰炸后共计受损几次

示例1
输入

4 4 
1 2 
2 3 
3 4 
1 
2 
3 
4

输出

1 
2 
3 
3

题解:

我一开始以为一个城市被轰炸后还在。。。发现并不是
我们来分析一个点被轰炸,哪些点会受到牵连
在这里插入图片描述
图中点1被轰炸,1的父亲的父亲,儿子的儿子还有兄弟(父亲的儿子)这些点会受损,同理这些点被轰炸,1也会被受损。

fa[]表示父子关系
我们可以用二维数组表示dp[i][j]来表示i节点攻击范围
j = 1 为结点i被轰炸的次数
j = 2 结点i的子结点被轰炸的次数
j = 3 结点i的子结点的子结点被轰炸的次数
而每个节点的父亲节点只有一个,我们可以用fa[x]来实现,而儿子节点可以有多个我们通过二维数组来实现。

总结图中节点x被轰炸的情况;
1.本身被轰炸 dp[x][1]
2.子节点被轰炸 dp[x][2]
3.子节点的子节点被轰炸 dp[x][3]
4.父亲节点被轰炸 dp[fa[x]][1]
5.父亲的父亲节点被轰炸 dp [ fa [ fa [ x ] ] ] [ 1 ]
6.兄弟节点被轰炸 dp[fa [ x ] ] [ 2 ] - dp [x ] 1

维护好这些,这样我们就可轻松进行查询
当x被轰炸时,就让上面6种情况++,注意第六种情况和第一种情况可以合并,所以这两个合成一个 dp[fa [ x ] ] [ 2 ]++就行。
最后输出距离x距离为0,1,2的点
距离为0即本身 dp[x][1]
距离为1 dp[fa[x]][2]
距离为2 dp [ fa [ fa [ x ] ] ] [ 3 ]
加起来就是x的答案

#include<bits/stdc++.h>
#include<vector>
using namespace std;
const int maxn=750003;
int n,q,fa[maxn],dp[maxn][4];
vector<int> edge[maxn];
void dfs(int u,int f){fa[u]=f;for(int v:edge[u])if(v!=f)dfs(v,u);}
int main(){scanf("%d%d",&n,&q);int u,v,x;for(int i=1;i<n;i++){scanf("%d%d",&u,&v);edge[u].push_back(v);edge[v].push_back(u);}dfs(1,0);while(q--){scanf("%d",&x);dp[fa[x]][2]++;//父亲的儿子,情况1和6dp[fa[x]][1]++;//父亲本身 情况4dp [ fa [ fa [ x ] ] ] [ 1 ] ++;//父亲的父亲 情况5dp [ x ] [ 2 ] ++;//儿子 情况2dp [ x ] [ 3 ] ++;//儿子的儿子 情况3printf("%d\n",dp[x][1]+dp[fa[x]][2]+dp[fa[fa[x]]][3]);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

asp.net core 发布到 docker 容器时文件体积过大及服务端口的配置疑问

在 asp.net core 发布时&#xff0c;本人先后产生了3个疑问。1、发布的程序为什么不能在docker容器中运行当时在window开发环境中发布后&#xff0c;dotnet xxx.dll可以正常运行&#xff1b;但放入docker容器后就报 *.*.deps.json not found 的错误。后根据下面的文章解决了问题…

水题(water)(非详细解答)

传送 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld 题目描述 其中&#xff0c;f(1)1;f(2)1;Z皇后的方案数&#xff1a;即在ZZ的棋盘上放置Z个皇后&#xff0c;使其互不攻击的方案数。…

网络流小结

最大流&#xff1a; EK算法&#xff1a; #include<iostream> #include<cstring> #include<cstdio> #include<queue> using namespace std; const int inf0x7fffffff; const int maxn10010; struct node{int u,v,f,next; }edge[300050]; int s,t,cnt,…

.NET MVC CSRF/XSRF 漏洞

最近我跟一个漏洞还有一群阿三干起来了……背景&#xff1a;我的客户是一个世界知名的药企&#xff0c;最近这个客户上台了一位阿三管理者&#xff0c;这个货上线第一个事儿就是要把现有的软件供应商重新洗牌一遍。由于我们的客户关系维护的非常好&#xff0c;直接对口人提前透…

jzoj5057-[GDSOI2017模拟4.13]炮塔【网络流,最大权闭合图】

正题 题面链接:https://gmoj.net/senior/#main/show/5057 题目大意 n∗mn*mn∗m的网格上有一些炮和敌军&#xff0c;每个炮可以攻击在它方向上一个敌军&#xff0c;但是要求炮弹的轨迹不能交叉。求最多打死多少敌军。 解题思路 我们先把炮分成两类&#xff0c;一类是横着打&a…

讲一下Asp.net core MVC2.1 里面的 ApiControllerAttribute

正文ASP.NET Core MVC 2.1 特意为构建 HTTP API 提供了一些小特性&#xff0c;今天主角就是 ApiControllerAttribute。0. ApiControllerAttribute 继承自 ControllerAttributeASP.NET Core MVC 已经有了ControllerAttribute&#xff0c;这个用来标注一个类型是否是Controller。…

新的UWP和Win32应用程序分发模型

自2005年引入ClickOnce技术以来&#xff0c;.NET就支持应用程序自动升级。在ClickOnce模型中&#xff0c;WinForms和WPF应用程序在启动时会从预先配置好的位置查找新版本。但是&#xff0c;由于微软试图模仿iOS应用商店模型&#xff0c;所以&#xff0c;该模型未能延续到UWP。微…

.net core grpc 实现通信(一)

现在系统都服务化&#xff0c;.net core 实现服务化的方式有很多&#xff0c;我们通过grpc实现客户端、服务端通信。grpc(https://grpc.io/)是google发布的一个开源、高性能、通用RPC&#xff08;Remote Procedure Call&#xff09;框架&#xff0c;使用HTTP/2协议&#xff0c;…

子序列

牛客网题目 题目描述 给出一个长度为n的序列&#xff0c;你需要计算出所有长度为k的子序列中&#xff0c;除最大最小数之外所有数的乘积相乘的结果 输入描述: 第一行一个整数T&#xff0c;表示数据组数。 对于每组数据&#xff0c;第一行两个整数N&#xff0c;k&#xff0c;含义…

横向扩展你的ASP.NET Core SignalR 应用

前言最近项目要用signalr来做实时通信&#xff0c;在研究asp.netcore signalr 应用横向扩展时候发现了这篇国外的博客&#xff0c;和大家分享一下原文连接地址负载均衡当你把你的应用部署到生产环境时&#xff0c;你将会想横向扩展你的应用。横向扩展意味着要你的应用要在多台服…

池化层(pooling)

目录 一、池化层 1、最大池化层 2、平均池化层 3、总结 二、代码实现 1、最大池化与平均池化 2、填充和步幅(padding和strides) 3、多个通道 4、总结 一、池化层 1、最大池化层 2、平均池化层 3、总结 池化层返回窗口中最大或平均值环节卷积层对位置的敏感性同样有窗口…

牛客网【每日一题】4月16日题目精讲 逆序对

文章目录题目描述题解&#xff1a;代码传送时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format:%lld 题目描述 求所有长度为n的01串中满足如下条件的二元组个数&#xff1a; 设第i位和第j位分别…

[BZOJ1095][ZJOI2007]捉迷藏 Query on a tree IV(树链剖分)

首先&#xff0c;我们求出树的重链&#xff0c;然后对于每一条链&#xff0c;建一颗线段树 树大概长这样&#xff1a; &#xff08;其中用红边连起来的是一条条重链&#xff09; 在线段树上&#xff0c;我们维护&#xff1a; Opt(u)&#xff1a;经过 u节点代表的链的其中一段 …

ASP.NET Core Web API + Identity Server 4 + Angular 6 实战小项目视频

今天开始尝试录制ASP.NET Core Web API的教学视频. 这是一个小项目的实战视频, 该项目采用了:ASP.NET Core 2.1 做APIIdentity Server 4Angular 6Angular Material这个项目比较简单, 适合ASP.NET Core Web API 和 Angular 初学者. 项目最终完成的大致效果如图:声明: 以前虽然经…

[USACO]Sprinklers 2: Return of the Alfalfa P(网格DP)

思路&#xff1a; 由题目易得&#xff1a;网格内种植的两种植物形成了一条 左上—右下 的分界线&#xff0c;考虑将问题转化成 DP求出有多少条合法的分界线 我们注意到&#xff1a; 分界线上的点都必须放洒水器&#xff0c;且所放洒水器有唯一选择&#xff1b; 其他的可以放洒…

.net core grpc consul 实现服务注册 服务发现 负载均衡(二)

在上一篇 .net core grpc 实现通信(一) 中&#xff0c;我们实现的grpc通信在.net core中的可行性&#xff0c;但要在微服务中真正使用&#xff0c;还缺少 服务注册&#xff0c;服务发现及负载均衡等&#xff0c;本篇我们将在 .net core grpc 通信 的基础上加上 服务注册&#x…

【BZOJ3218】a+b problem (最小割 + 主席树)

传送门 继续优化&#xff1a;把a[ ]离散化 #include<bits/stdc.h> using namespace std; const int inf1000000007; const int N200010; const int M1000010;struct Edge{int u,v,f,next; }edge[M]; int head[N],cnt; int s,t,flow,level[N];struct Node{int x,id; }e[…

微软技术直通车(第三期)现场实录

微软技术直通车&#xff08;第三期&#xff09;于本月18日14时&#xff0c;在中国微软总部圆满举行。本次活动得到了微软最佳有价值专家&#xff08;Microsoft MVP&#xff09;中国区项目组的鼎力支持。同时&#xff0c;Microsoft MVP中国区项目组负责人也亲临现场致辞&#xf…

[NOI2019] 序列(模拟费用流)

原先自己想的建图&#xff1a; 正确建图&#xff1a; 但是 n 太大了&#xff0c;所以考虑模拟费用流&#xff1a; 注意&#xff1a; 在1中&#xff0c; 若选的两个位置相同&#xff0c;则为情况2&#xff0c;不用减 f&#xff1b; 若选的位置在另一序列中已被选&#xff0c;…

【结论】游戏(jzoj 5536)

游戏 jzoj 5536 题目大意&#xff1a; 给一个范围和一个矩形&#xff0c;让你在这个范围内放若干个这样的矩形&#xff08;不能改变方向&#xff0c;不能重叠&#xff09;&#xff0c;让你求出最少放多个矩形可以使范围内无法再放矩形 输入样例#1 11 4 3 2输入样例#2 10 …