将军令将军令将军令


Description

链接


Solution

不断从深度最大的节点的KKK级父节点进行扩展


Attention

注意 扩展 时使用 DFSDFSDFS, 因为 BFSBFSBFS 保存上一个经过的节点较麻烦
代码中有BFSBFSBFS 函数, 仅供参考, 由于回环往复地入队, TLETLETLE 不可避免,


Code

#include<bits/stdc++.h>
#define reg registerint read(){int s = 0, flag = 1;char c;while((c=getchar()) && !isdigit(c))if(c == '-'){ c = getchar(), flag = -1; break ; }while(isdigit(c)) s = s*10 + c-'0', c = getchar();return s * flag;
}const int maxn = 100005;int N;
int K;
int num0;
int Ans;
int head[maxn];
int Fa[maxn];
int f[maxn], Used[maxn];
std::queue <int> Q;struct Edge{ int nxt, to; } edge[maxn << 1];void Add(int from, int to){ edge[++ num0] = (Edge){ head[from], to }; head[from] = num0; }void BFS(int k){while(!Q.empty()) Q.pop();Q.push(k); f[k] = K, Used[k] = 1;while(!Q.empty()){int ft = Q.front(); Q.pop();for(reg int i = head[ft]; i; i = edge[i].nxt){int to = edge[i].to;if(Used[to]) continue ;Used[to] = 1;if(f[ft]-1) f[to] = f[ft] - 1, Q.push(to);}}
}struct Node{int dep, id;
} T[maxn];void DFS(int k, int fa){T[k].id = k;Fa[k] = fa;T[k].dep = T[fa].dep + 1;for(reg int i = head[k]; i; i = edge[i].nxt){int to = edge[i].to;if(to == fa) continue ;DFS(to, k);}
}void DFS_2(int k, int left, int last){Used[k] = 1;if(!left) return ;for(reg int i = head[k]; i; i = edge[i].nxt){int to = edge[i].to;if(to == last) continue ;DFS_2(to, left-1, k);}
}bool cmp(Node a, Node b){ return a.dep < b.dep; }int main(){N = read(), K = read();int ____ = read();if(!K){ printf("%d\n", N); return 0; }for(reg int i = 1; i < N; i ++){int u = read(), v = read();Add(u, v), Add(v, u);}DFS(1, 0);std::sort(T+1, T+N+1, cmp);for(reg int i = N; i >= 1; i --){int t = T[i].id;if(!Used[t]){for(reg int j = 1; j <= K; j ++) if(Fa[t]) t = Fa[t];else break ;DFS_2(t, K, 0), Ans ++;}}printf("%d\n", Ans);return 0;
}

P3942 将军令 [贪心]相关推荐

  1. 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) ...

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

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

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

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

  4. 算法设计与分析第3章 贪心算法

    第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...

  5. 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...

    问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...

  6. Too Many Segments CF595D 贪心乱搞

    传送门! 比赛的时候没有时间写了,看看了看大佬的代码,学习学习. 一开始实验室大佬说是用差分写的,但是看了代码发现打cf的人大家都是stl狂魔! 贪心思路:区间按照左端点排序,从1~2e5遍历每一个点 ...

  7. Roundgod and Milk Tea 贪心

    这个题好像可以用一种类似与置换的贪心方法来做~ sum记为剩余奶茶,一开始sum等于奶茶和 ans记录已经喝的奶茶数 不用排序,我们就从前往后直接处理,考虑的是每一个班最多可以喝多少杯奶茶 就是从剩余 ...

  8. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码

    1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...

  9. 贪心:expedition 最优加油方法

    已知一条公路上,有一个起点与一个终点,这之间有n个加油站;已知从这n个加 油站到终点的距离d与各个加油站可以加油的量l,起点位置至终点的距离L与起 始时刻油箱中汽油量P;假设使用1个单位的汽油即走1个 ...

最新文章

  1. 在使用chrome调试angular2的时候出现下面问题
  2. 金山办公科创板过会 雷军有望迎来实控第三家上市公司
  3. gbk转utf-8 iconv 编码转换
  4. python让词向量一直在内存里_python读取大文件踩过的坑——读取txt文件词向量
  5. atlas 力矩计算_Atlas Copco基本拧紧技术
  6. GCPC 2018 – Problem D: Down the Pyramid
  7. 力扣-19 删除链表的倒数第N个结点
  8. Android(java)学习笔记51:ScrollView用法
  9. larveral 直接拷贝安装_2020年mac系统下制作win10引导安装盘,亲测可用
  10. 【DSP入门】DSP2803x算法加速利器之CLA
  11. xp计算机用户名和密码忘记了怎么办,xp电脑开机密码忘记了怎么办,xp忘记开机密码的解决方法...
  12. 7年弹指一挥间:iOS演进史
  13. 各平台安装OpenCV
  14. E0 S0 SVL接口配置
  15. Webots学习笔记(四)---舵轮模型
  16. caffe中forward过程总结
  17. Xcode 13.4.1如何显示文件拓展名
  18. 工程师做主播,一手技术行走天下
  19. html窗口最小宽度和高度,html设置尺寸大小的方法
  20. 劈尖干涉公式_劈尖干涉条纹间距的推导及应用

热门文章

  1. 微信小程序---目录结构
  2. python 使用七牛云cdn
  3. 计算机中的dump到底是什么意思?
  4. logcat日志的五种级别
  5. TwinCAT3 设置断电保持变量
  6. 南京工程学院计算机英语,南京工程学院是什么意思
  7. 强制清理CDN(DNS)缓存方法
  8. GAN_1——基础知识
  9. 基于java+jsp+mysql教师教学质量测评系统
  10. python_操作MySQL 初解 之__类方法调用并 增-删-改-查