P3942 将军令 [贪心]
将军令将军令将军令
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 将军令 [贪心]相关推荐
- 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) ...
- 【题解】将军令 Luogu P3942 (未完成)
历史/落在/赢家/之手 至少/我们/拥有/传说 谁说/败者/无法/不朽 拳头/只能/让人/低头 念头/却能/让人/抬头 抬头/去看/去爱/去追 你心中的梦 将军令 题目描述 又想起了四月. 如果不是省 ...
- NOIP模拟测试17「入阵曲·将军令·星空」
入阵曲 题解 应用了一种美妙移项思想, 我们先考虑在一维上的做法 维护前缀和$(sum[r]-sum[l-1])\%k==0$可以转化为 $sum[r]\% k==sum[l-1]\%k$开个桶维护一 ...
- 算法设计与分析第3章 贪心算法
第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...
- 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...
问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...
- Too Many Segments CF595D 贪心乱搞
传送门! 比赛的时候没有时间写了,看看了看大佬的代码,学习学习. 一开始实验室大佬说是用差分写的,但是看了代码发现打cf的人大家都是stl狂魔! 贪心思路:区间按照左端点排序,从1~2e5遍历每一个点 ...
- Roundgod and Milk Tea 贪心
这个题好像可以用一种类似与置换的贪心方法来做~ sum记为剩余奶茶,一开始sum等于奶茶和 ans记录已经喝的奶茶数 不用排序,我们就从前往后直接处理,考虑的是每一个班最多可以喝多少杯奶茶 就是从剩余 ...
- 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码
1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...
- 贪心:expedition 最优加油方法
已知一条公路上,有一个起点与一个终点,这之间有n个加油站;已知从这n个加 油站到终点的距离d与各个加油站可以加油的量l,起点位置至终点的距离L与起 始时刻油箱中汽油量P;假设使用1个单位的汽油即走1个 ...
最新文章
- 配置Android开发环境(fedora)
- Snapchat - give sum target listInteger first who hits target wins
- python起步输入-《Python编程:从入门到实践》第一章:起步
- UFLDL 教程学习笔记(一)
- android 可以搜索到热点 连接时显示未找到热点_魔兽世界地精经典语录:时间就是金钱!8266互联网时间显示器教程...
- Spring Cloud Gateway——2020.x以上版本HTTP 503 或 NoLoadBalancer[负载均衡]解决方案
- LeetCode 1774. 最接近目标价格的甜点成本(DFS / 01背包)
- 云原生时代,政企混合云场景IT监控和诊断的难点和应对之道
- python读取xml文件内容_python读取xml文件
- sql管理器指定服务器名字,如何修改sql server 服务管理器 服务器名称
- java布类型的常量,java数据类型;常量与变量;
- 《C语言及程序设计》实践参考——输出小星星(全解)
- python如何调用tess_python下以api形式调用tesseract识别图片验证码
- devc 能优化吗_小网站能做seo优化吗?如何为小公司网站做seo优化?
- 图片太模糊?这几个工具可以将图片变清晰
- 用FCM函数实现模糊C均值聚类算法
- my ReadBook_liutongjingjixue / circulation economics
- 基于.net实现F4一键杀死指定进程(龙之谷秒掉器)
- e900v21e 装第三方_创维e900v21e刷机包
- 如何使用 Windows 电脑向 Android 设备安装 apk 应用