CF980E】的更多相关文章

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…
题面 Panel 国将举办名为数字游戏的年度表演.每个省派出一名选手. 国家有 n 个编号从 1 到 n 的省,每个省刚好有一条路径将其与其他省相连.第 i 个省出来的代表有 2^i 名粉丝. 今年,主席打算削减开支,他想要踢掉 k 个选手.但是,被踢掉的选手的省将很 angry 并且不会让别的任何人从这个省经过. 主席想确保所有剩下选手的省都互相可达,他也希望最大化参与表演的选手的粉丝数. 主席该踢掉哪些选手呢? 升序输出要踢掉的选手编号. 因为是二进制表示权值,可知越大的数越要保留,因为所有…
由于是$2^i$,所以一定要尽量留下来编号大的点 我们干脆就让n号点做树根,它是一定要留的 然后如果要留i的话,i一直到根的路径也都要留.所以只要判断一下够不够把这个路径上还没有留的都留下来 记录下已经留下来的点,然后倍增来找就可以了 然后如果可以的话,可以一个一个往上跳地修改,反正每个点只能被留下来一次,只要跳到了已经留过的点直接结束就行了 #include<bits/stdc++.h> #define pa pair<int,int> #define CLR(a,x) mems…