Codeforces 980 E. The Number Games】的更多相关文章

\(>Codeforces \space 980 E. The Number Games<\) 题目大意 : 有一棵点数为 \(n\) 的数,第 \(i\) 个点的点权是 \(2^i\) 你需要删掉 \(k\) 个点,使得删掉这些点后树依然联通,且剩下的点权之和最大,并输出方案 \(n , k \leq 10^6\) 解题思路 : 问题可以转化为选取 \(n - k\) 个点,使得选取的点联通且权值和最大 根据点权是 \(2^i\) 的性质,显然有选取编号为 \(x\) 的点比选取 \(i =…
[codeforces 325]B. Stadium and Games 试题描述 Daniel is organizing a football tournament. He has come up with the following tournament format: In the first several (possibly zero) stages, while the number of teams is even, they split in pairs and play on…
题目连接: Codeforces 455B A Lot of Games 题目大意:给定n.表示字符串集合. 给定k,表示进行了k次游戏,然后是n个字符串.每局開始.字符串为空串,然后两人轮流在末尾追加字符.保证新的字符串为集合中某字符串的前缀.不能操作者输,新一轮由上一句输的人先手. 解题思路:首先对字符集合建立字典树.然后依据博弈的必胜必败性质搜索出先手的决策状态,可决定胜败3,仅仅能胜利2,仅仅能失败1.不可掌控(即对手可决定胜败)0. 对于状态3,为必胜.能够採用前K-1场败,然后保证第…
CF980E The Number Games 给定一棵大小为 \(n\) 的树,第 \(i\) 个点的点权为 \(2^i\) ,删掉 \(k\) 个点及其连边,使得剩下的点组成一个连通块,且权值和最大,输出要删掉的点 \(n,\ k\leq10^6\) 贪心,倍增,dfs序 很容易想到一个贪心:不断删掉能被删除且权值最小的点,用堆实现 但很明显这是错的:局部最优 \(\neq\) 全局最优 因为点权为 \(2^i\) ,所以与其选择 \(1,\ 2,\ \cdots,\ i-1\) 不如选 \…
CF980E The Number Games 题意翻译 Panel 国将举办名为数字游戏的年度表演.每个省派出一名选手. 国家有 n 个编号从 1 到 n 的省,每个省刚好有一条路径将其与其他省相连.第 i 个省出来的代表有 2i 名粉丝. 今年,主席打算削减开支,他想要踢掉 k 个选手.但是,被踢掉的选手的省将很 angry 并且不会让别的任何人从这个省经过. 主席想确保所有剩下选手的省都互相可达,他也希望最大化参与表演的选手的粉丝数. 主席该踢掉哪些选手呢? 输入格式 输入n,k .( k…
原文链接https://www.cnblogs.com/zhouzhendong/p/9074226.html 题目传送门 - Codeforces 980E 题意 $\rm Codeforces$ 真是个令人伤心的地方. 伤心的 $zzd$ 给你一个有 $n$ 个节点的树,编号为 $i$ 的节点权值为 $2^i$. 让你砍掉其中 $k$ 个节点,使得剩余的所有节点都连通,并最大化剩余节点的权值和.输出方案. $n\leq 10^6$ 题解 伤心的 $zzd$ 再一次来到了令人伤心的 $\rm…
题目传送门 传送点I 传送点II 传送点III 题目大意 给定一颗有$n$个点的树,$i$号点的权值是$2^{i}$要求删去$k$个点,使得剩下的点仍然连通,并且总权值和最大,问删去的所有点的编号. 其实这道题和虚树没有太大的关系,我只是提一下而已. 因为点的权值很特殊,所以相当于要求剩下序列(从大到小)的字典序最大. 然后过程就比较显然了.从大到小枚举点,判断能否保留它(计算加入它后,新的树的点数有没有超过限制).保留它是指和已经被保留的点连通. 这个相当于使得一些关键点连通,然后求出总点数.…
题意: 给出一棵树,要求去掉k个点,使得剩下的还是一棵树,并且要求Σ(2^i)最大,i是剩下的节点的编号. 思路: 要使得剩下的点的2的幂的和最大,那么肯定要保住大的点,这是贪心. 考虑去掉哪些点的话,那么去掉一个点,它相连的子树的点肯定都得去掉,很麻烦. 所以放过来考虑保留哪些点,那么就从大到小考虑是否保留当前的点.并且把保留的点做标记. 首先n这个点是肯定可以保留的,标记,然后依次考虑n-1,n-2...1. 对于当前的点,判断是否已经被标记,如果没有被标记,那么就找到离当前点最远的没有被标…
题目大意:给你n个点的一棵树, 每个点的权值为2^i ,让你删掉k个点使得剩下的权值和最大. 思路:这题还是比较好想的, 我们反过来考虑, 剩下一个的情况肯定是选第n个点,剩下两个 我们肯定优先考虑第n - 1 个点, 因为其他点全部加起来都没有这个点的权值大, 所以我们可以 以第n个点为根, 倍增出每个点祖先的情况, 然后从后往前贪心, 能取到就取, 不能取到就跳过. #include<bits/stdc++.h> #define LL long long #define fi first…
链接 大意: 给定$n$节点树, 求删除$k$个节点, 使得删除后还为树, 且剩余点$\sum{2^i}$尽量大 维护一个集合$S$, 每次尽量添加最大的点即可 这样的话需要支持求点到集合的最短距离, 直接用线段树进行子树更新就行了 就是说每次添加一个点$x$, 显然只会影响到$x$子树的距离 用线段树维护每个点在$S$中的祖先的最大深度$v$, 即用$dep[x]$更新$x$子树 则一个点$y$到$S$的最短距离就为$D=dep[y]-v[y]$ 若剩余点大于等于$D$, 说明可以添加$y$,…