原题链接:https://www.luogu.org/problemnew/show/P3942

将军令

题目背景

pdf题面和大样例链接:http://pan.baidu.com/s/1cawM7c 密码:xgxv

 历史/落在/赢家/之手 至少/我们/拥有/传说 谁说/败者/无法/不朽 拳头/只能/让人/低头 念头/却能/让人/抬头 抬头/去看/去爱/去追 你心中的梦
题目描述

又想起了四月。

如果不是省选,大家大概不会这么轻易地分道扬镳吧? 只见一个又一个昔日的队友离开了机房。

凭君莫话封侯事,一将功成万骨枯。

梦里,小 F 成了一个给将军送密信的信使。

现在,有两封关乎国家生死的密信需要送到前线大将军帐下,路途凶险,时间紧迫。小 F 不因为自己的祸福而避趋之,勇敢地承担了这个任务。

不过,小 F 实在是太粗心了,他一不小心把两封密信中的一封给弄掉了。

小 F 偷偷打开了剩下的那封密信。他 发现一副十分详细的地图,以及几句批文——原来 这是战场周围的情报地图。他仔细看后发现,在这张地图上标记了 n 个从 1 到 n 标号的 驿站,n − 1 条长度为 1 里的小道,每条小道双向连接两个不同的驿站,并且驿站之间可以 通过小道两两可达。

小 F 仔细辨认着上面的批注,突然明白了丢失的信的内容了。原来,每个驿站都可以驻 扎一个小队,每个小队可以控制距离不超过kkk里的驿站。如果有驿站没被控制,就容易产 生危险——因此这种情况应该完全避免。而那封丢失的密信里,就装着朝廷数学重臣留下的 精妙的排布方案,也就是用了最少的小队来控制所有驿站。

小 F 知道,如果能计算出最优方案的话,也许他就能够将功赎过,免于死罪。他找到了 你,你能帮帮他吗? 当然,小 F 在等待你的支援的过程中,也许已经从图上观察出了一些可能会比较有用的 性质,他会通过一种特殊的方式告诉你。

输入输出格式
输入格式:

从标准输入中读入数据。

输入第111行一个正整数n,k,tn,k,tn,k,t,代表驿站数,一支小队能够控制的最远距离,以及特殊性质所代表的编号。关于特殊性质请参照数据范围。

输入第222行至第nnn行,每行两个正整数ui,viu_i ,v_iui​,vi​,表示在uiu_iui​和viv_ivi​间,有一条长度为 一里的小道。

输出格式:

输出到标准输出中。

输出一行,为最优方案下需要的小队数。

输入输出样例
输入样例#1:

4 1 0
1 2
1 3
1 4

输出样例#1:

1

输入样例#2:

6 1 0
1 2
1 3
1 4
4 5
4 6

输出样例#2:

2

说明
【样例 1 说明】

如图。由于一号节点到周围的点距离均是 1,因此可以控制所有驿站。

【样例 2 说明】

如图,和样例 1 类似。

子任务会给出部分测试数据的特点。如果你在解决题目中遇到了困难,可以尝试只解 决一部分测试数据。

关于ttt的含义如下: t=0t = 0t=0:该测试点没有额外的特殊性质; t=1t = 1t=1:保证最多888个点的所连接的小道超过111条;t=2t = 2t=2:保证所有点到111号点的距离不超过222。

每个测试点的数据规模及特点如下表

题解

可以使用消防站的设立的思路,从维护爷爷变成维护kkk级祖先,复杂度O(nk)O(nk)O(nk)。

不过还有一种更优秀的O(n)O(n)O(n)做法,我们维护对于每个点向下离自己最远的没有覆盖的点的距离,如果该点有一支小队,距离为−k−1-k-1−k−1,合并子树信息时,如果最小值+最大值<0,说明有小队可以覆盖这个点,该点的值为最小值+1,反之为最大值+1,当当前点值大于kkk时,设立小队。

代码
#include<bits/stdc++.h>
using namespace std;
const int M=1e5+5;
int head[M],nxt[M<<1],to[M<<1],dis[M],ans,cnt,n,k;
void add(int f,int t){nxt[++cnt]=head[f],head[f]=cnt,to[cnt]=t;}
void dfs(int f,int v)
{int mx=0,mn=M;for(int i=head[v];i;i=nxt[i])if(to[i]!=f)dfs(v,to[i]),mx=max(mx,dis[to[i]]+1),mn=min(mn,dis[to[i]]+1);dis[v]=(mx+mn<0?mn:mx);if(dis[v]>=k)dis[v]=-k-1,++ans;
}
void in(){scanf("%d%d%*d",&n,&k);for(int i=1,a,b;i<n;++i)scanf("%d%d",&a,&b),add(a,b),add(b,a);}
void ac(){dfs(0,1);if(dis[1]>=0)++ans;printf("%d",ans);}
int main(){in(),ac();}

Luogu3942 将军令相关推荐

  1. 将军令:数据安全平台建设实践

    将军令:数据安全平台建设实践 2019年02月15日 11:16:46 美团技术团队 阅读数:42 背景 在大数据时代,数据已经成为公司的核心竞争力.此前,我们介绍了美团酒旅起源数据治理平台的建设与实 ...

  2. NOIP模拟测试17「入阵曲·将军令·星空」

    入阵曲 题解 应用了一种美妙移项思想, 我们先考虑在一维上的做法 维护前缀和$(sum[r]-sum[l-1])\%k==0$可以转化为 $sum[r]\% k==sum[l-1]\%k$开个桶维护一 ...

  3. 【转载】网易将军令工作原理

    最近开始玩梦幻手游,为了领以前端游的返利必须输入将军令,那个已经一年没用了,输入了几次都提示错误(后来证实是系统繁忙而已),我以为是将军令时间不对了,所以用了下官网的修复功能.也对将军令修复原理有了兴 ...

  4. 将军令:数据安全平台建设实践 1

    背景 在大数据时代,数据已经成为公司的核心竞争力.此前,我们介绍了美团酒旅起源数据治理平台的建设与实践,主要是通过各种数据分析挖掘手段,为公司发展决策和业务开展提供数据支持. 近期,业内数据安全事件频 ...

  5. 8.11 NOIP模拟测试17 入阵曲+将军令+星空

    T1 入阵曲 前缀和维护可以得60分 f[x1][y1][x2][y2]=sum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1];  O(n4) ...

  6. 2022网易最新版本将军令算法刨析(2)

    大家好,我是任雪飘!今天我们接着昨天的刨析,将一下so层的实现! 准备工作 一台安卓手机 ida 工具地址: 点击直达 提取码:w28g 网易将军令5.1.1 apk地址: 点击直达 提取码:e5wa ...

  7. 某易—将军令动态刨析算法(1)

    某易-将军令动态刨析算法(1) 我是任雪飘,一个技术渣渣,可以加我星球一起交流! 我们刷新一下,得到的就是30秒会更新一次,这里我们开始进行方法刨析. 开始记录方法调用过程 点击刷新动态码后关闭记录* ...

  8. P3942 将军令 [贪心]

    将军令将军令将军令 Description 链接 Solution 不断从深度最大的节点的KKK级父节点进行扩展 Attention 注意 扩展 时使用 DFSDFSDFS, 因为 BFSBFSBFS ...

  9. 【题解】将军令 Luogu P3942 (未完成)

    历史/落在/赢家/之手 至少/我们/拥有/传说 谁说/败者/无法/不朽 拳头/只能/让人/低头 念头/却能/让人/抬头 抬头/去看/去爱/去追 你心中的梦 将军令 题目描述 又想起了四月. 如果不是省 ...

  10. 小虎电商浏览器:幕思城将军令帮你快速下载手淘主图

    ​幕思城将军令手淘主图下载是淘宝天猫卖家必备的数据分析工具,有手淘主图下载,宝贝主图复制,商品详情页等功能,一起来看看吧. 幕思城将军令手淘主图下载 ● 手淘车图下载可以统计手机淘宝直通车宝贝的基本情 ...

最新文章

  1. 对象Equals相等性比较的通用实现
  2. 图像反光能被一键去除了?港科大开源RFC,仅用一个操作,强反光也能完美去除|CVPR2021...
  3. hadoop单机安装,小白上手最详细教程-Ali0th
  4. shell字符串截取总结
  5. Redis安装[Windows]
  6. 魔术命令python_Python前10个魔术命令可以帮助您提高生产率
  7. 用JavaScript探测页面上的广告是否被AdBlock屏蔽了的方法
  8. android的动态注册,Android JNI 函数注册的两种方式(静态注册/动态注册)
  9. go 语言随机数的生成
  10. git中clone出来项目,导入到eclipse并运行web项目
  11. Spring Cloud(Greenwich版)-02-服务注册与服务发现-Eureka入门
  12. 编写一个程序,模拟默认密码的自动生成策略,手动输入用户名,根据用户名自动生成默认密码。在生成密码时,将用户名反转即为默认的密码。
  13. 可能致癌的几种化妆品
  14. Powershell无法执行脚本问题解决方案
  15. 4.13 使用扇贝工具制作猥琐的老鼠 [Illustrator CC教程]
  16. html5 i标签什么意思,快速了解HTML5 b和i标签
  17. 详述如何退出 Vim 编辑器
  18. spring factory-method和factory-bean 使用
  19. Centos8找回拼音输入法
  20. 四大ERP供应商SAP、Oracle、用友、金蝶哪个好

热门文章

  1. call_user_func_array 调用回调函数
  2. spring 的3种常用的注入方式
  3. Tyvj - 1305 单调队列优化dp
  4. selenium调用浏览器进行抓取页面
  5. Build Path
  6. memcached在项目中的应用
  7. 在ios中运用core animation暂停和继续动画
  8. 工作4-5年的.NET开发人员也需要有人带带才可以保证软件项目的质量
  9. 如何简单描述java中的代理模式
  10. 字节码指令之同步控制指令