![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
文章平均质量分 72
如题
Edward The Bunny
这个作者很懒,什么都没留下…
展开
-
[NOI2014] 起床困难综合症(二进制,贪心)
#include<bits/stdc++.h>int n,m,ans,x,a1=0,a2=-1;//-1的补码:11111111111... char str[5];int main(){ scanf("%d%d",&n,&m); while(n--){ scanf("%s%d",str,&x); if(str[0]=='A') a1&=x, a2&=x; if(str[0]=='X') a1^=x, a2^=x; if(st.原创 2021-10-19 16:24:35 · 93 阅读 · 0 评论 -
[集训队作业2018] 三角形(贪心,堆,线段树合并)
传送门首先,在结点uuu放上w[u]w[u]w[u]个石子后,出于贪心考虑,下一步一定会把uuu的所有儿子vvv上的石子收回手中。转换题意:即cntcntcnt为当下树上的石子数,对每个结点uuu可以执行一次操作:step1. cnt+=w[u]cnt+=w[u]cnt+=w[u]step2. cnt−=∑v∈son(u)w[v]cnt-=\sum_{v\in son(u)}w[v]cnt−=∑v∈son(u)w[v]当且仅当对uuu的所有儿子vvv都执行过操作,才能对uuu执行操作。问原创 2021-10-12 22:04:57 · 272 阅读 · 1 评论 -
[ZJOI2005]午餐(贪心+dp)
首先若只有一个窗口,利用贪心,按吃饭时间从大到小排序即可正确性证明:定义 eat[i] = 第i个人的吃饭时间,time[i] = 第i个人的打饭时间延长时间T[i]=max(eat[i]- ∑j=i+1ntimej\sum\limits_{j=i+1}^ntime_jj=i+1∑ntimej ,0)最后的集合时间为∑j=1ntimej\sum\limits_{j=1}^ntime_jj=1∑ntimej + max{T[i] , i∈[1,N]}将人按照eat大小从大到小排序后,易证原创 2021-03-05 21:28:31 · 152 阅读 · 0 评论 -
CF526G Spiders Evil Plan(树上最优性问题、倍增+线段树)
Description一棵 n 个结点的树,有正边权。用 y 条链覆盖这棵树,满足:所有链连通(有重点即算作相连)点 x 被覆盖被覆盖的边的权值和尽可能大q 次给出 x, y,询问最大边权和,强制在线。n, q ≤ 10510^5105Solution可以发现一些比较显然的性质:权值是正的,那么链的端点一定可以全部调整成叶子。如果链不连通,可以交换链的端点使它们连通。使用 k 条路径就可以覆盖一棵有 2k 个叶子的树。(先以任意方式匹配叶子。如果有两条路径不相交,原创 2021-02-05 07:51:14 · 242 阅读 · 0 评论 -
CF1088F Ehab and a weird weight formula(树上最优性问题、贪心+倍增)
Description给出一棵 n 个结点的树,点 i 有正权值 wiw_iwi,wiw_iwi 互不相同。除了权值最小的点,保证每个点 u 都有一个邻点 v 使得 wvw_vwv < wuw_uwu。构造一棵树,最小化代价:对于每个点 u,产生 degu×wudeg _u \times w_udegu×wu 的代价,其中 degudeg _udegu 是构造的树中 u 的度数。对于每条边 (u, v),产生 ⌈log2dis(u,v)⌉×min(wu,wv)⌈log_2di转载 2021-02-05 09:26:03 · 107 阅读 · 0 评论 -
[bzoj 4811] 由乃的OJ(贪心 + 树链剖分)
前置技能:[Noi2014]起床困难综合症。不难看出,这道题其实就是上一道题的加强版在上一道题中,因为位运算时位与位之间互不干扰所以从高位到低位枚举初始值二进制上的每一位为0和为1时,经过n次计算后这一位的结果,贪心选取在这题中,我们也可以用同样的思路求取答案因为有树上路径查询,考虑树链剖分,用线段树维护每一位初始为0和1时,经过一个区间的计算变为多少因为&、|、^ 运算都符合结合律,所以这样做是可行的问题是,&、|、^ 运算并不都满足交换律,即每个区间从左到右计算和从右到左计原创 2020-08-21 21:14:49 · 132 阅读 · 0 评论