随笔分类 -  贪心

摘要:"题目链接" 二分答案,判断需要断几条边,用$f[i]$表示以$i$为根的子树断边后的最长路径,对于一个点$u$,存在$f[v] mid$时就删到$v$的边$f[v1]+f[v2] mid$时就删$f$较大的边,可以sort之后搞一搞 阅读全文
posted @ 2019-10-26 16:45 yjk 阅读(153) 评论(0) 推荐(0)
摘要:"题目链接" m=n 1是直接按字典序dfs就行, m=n时是一棵基环树,我们发现当一个点在环上时,可以把它和它的一个在环上的儿子之间的边删掉,然后回溯,到达它的第一个有其他儿子的祖先的另一个儿子上,我们只需要记录一个点的第一个有其他儿子的祖先的其他儿子的最小值,贪心就行了 cpp include 阅读全文
posted @ 2019-10-13 18:22 yjk 阅读(142) 评论(0) 推荐(0)
摘要:横纵坐标互不影响,所以问题转化到一维:在n个区间中每个区间选一个数,n个数都被选一次 将区间按右端点排序,枚举区间,每个区间选最靠左的没被选过的点 cpp include include include include using namespace std; const int MAXN=5010 阅读全文
posted @ 2019-10-07 08:42 yjk 阅读(111) 评论(0) 推荐(0)
摘要:"题目链接" 众所周知,这道题和积木大赛是同一道题 题意就是给出一段自然数序列,每次操作$(L,R)$把区间$[L,R]$的数全部减一,不允许出现负数,问把序列变为零的最小操作次数 贪心做法 样例 大概长这个样子 我们考虑第一列的四块格子,最少需要$4$次操作给消除掉 在考虑第二列的$3$个格子时, 阅读全文
posted @ 2019-08-15 15:29 yjk 阅读(534) 评论(0) 推荐(0)
摘要:[模板]最大化平均值 给出$n$个物品的体积和价值,取$k$个物品,使得价值与体积之比最大 考虑二分答案,check(x)表示检查是否存在一个大小为$k$的子集使得集合中物品的价值与体积之比$ =x$ 即$ \frac{\sum v_i}{\sum w_i} \geq x$ 移项得 $\sum v_ 阅读全文
posted @ 2018-10-31 20:03 yjk 阅读(183) 评论(0) 推荐(0)
摘要:~~这是一个国王、n个$Dark$臣、和他们的小左小右$van$游戏的故事~~ "题目链接" 考虑两个$Dark$臣$X$和$Y$,设他们前面的$Dark$臣左手乘积为P 考虑两种先后顺序的贡献: $$X Y:\frac{P}{X_b}+\frac{P\times X_a}{Y_b}=P\times 阅读全文
posted @ 2018-10-15 20:44 yjk 阅读(182) 评论(0) 推荐(0)
摘要:"题目链接" 这题的 实际上和“ "流水调度问题" ”是一样的 ~~(我是不会告诉你我是看了讨论才知道的)~~ ~~于是我就翻开了我们教练弄来的一本蓝不拉几的叫做“信息学奥赛一本通·提高篇”的书~~ 我们发现,$A$机器显然在不停的工作是最优的,要让$A$、$B$的总时间最短,就是要让$B$机器的空 阅读全文
posted @ 2018-10-15 20:25 yjk 阅读(468) 评论(0) 推荐(0)
摘要:消防局的设立 题目链接 贪心:每次取出深度最大的节点,若没有被覆盖到,要想覆盖它, 最优的做法显然是将它的爷爷设为消防局 (因为该节点深度为最大,选兄弟、父亲所覆盖的节点,选了爷爷后都能够覆盖) 用优先队列维护深度即可 阅读全文
posted @ 2018-08-03 18:58 yjk 阅读(115) 评论(0) 推荐(0)
摘要:倒水 题目链接 显然,2^x个杯子里的水可以倒在一个杯子里 所以我们可以贪心地每次将N中最大的2^x减掉 减k次(若中途已经为0,直接输出0) 若大于0,用最小的比N大的2^x减剩下的N,即为答案 阅读全文
posted @ 2018-07-27 21:17 yjk 阅读(140) 评论(0) 推荐(0)
摘要:集合 题目链接 显然,我们是要把数据先排序的, 然后从大到小枚举每个数,看是否能选上, 能选就选,不能拉倒 若能,二分查找a[i]/k,若查找成功,ans++ 将a[i]/k标记为不能选择 最后输出答案即可 (从小到大枚举会爆long long) 阅读全文
posted @ 2018-07-24 17:54 yjk 阅读(181) 评论(0) 推荐(0)
摘要:排行榜 题目链接 看到题解中一个很巧妙的做法: 先确定SAME的位置, 将DOWN的按输入顺序从上往下输出 再将UP的接着从上往下输出 这样便可以保证DOWN的人名次一定下降了 UP的人名次一定上升了 阅读全文
posted @ 2018-07-24 17:42 yjk 阅读(880) 评论(0) 推荐(0)
摘要:删数问题 题目链接 首先找出最小的k个数:用堆每次取出最小的元素p,将p*2+1和p*4+5压入堆。 贪心求最大数:从前往后找第一个data[j+1]>data[j],删除data[j].(链表应该是比较快的,然而蒟蒻懒得写链表,用了一个数组瞎搞。。不开氧气优化会T一个点) 阅读全文
posted @ 2018-03-05 19:01 yjk 阅读(549) 评论(0) 推荐(0)