贪心
文章平均质量分 53
人类本质
wind__whisper
qwq
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
AT2293 [AGC009D] Uninity(贪心、状压)
贪心原创 2022-04-20 21:16:32 · 299 阅读 · 0 评论 -
CF1534F:Falling Sand(tarjan、贪心、dp)
解析 本题做的过程大概是:到了正解门口决定回头,绕了地球一圈最后从另一边走到正解了… 首先 easy version 很简单,如果从一列最大值可以走到另一列最大值,那么后者就没用了。缩完点所有的零度点就是答案。 hard version 的问题就是选的点是最大值,但要求走到的点不一定是最大值。 要求走到的点如果互相可达,那么可以被到达的也没用了,所以有用的点满足互不可达。 那么如果到一个点够不到要求高度了,后面必然更达不到,所以选择每一列后可以满足的点必然是连续的区间。 而且不难发现我选的列右移的时候,其满原创 2022-04-06 10:47:52 · 351 阅读 · 0 评论 -
P4364 [九省联考 2018] IIIDX(线段树、贪心)
很妙的贪心原创 2022-03-18 15:07:51 · 268 阅读 · 0 评论 -
洛谷P1484:种树(反悔贪心)
反悔贪心好题原创 2022-01-24 17:26:59 · 686 阅读 · 0 评论 -
洛谷P1650:田忌赛马(贪心)
经典贪心的策略与证明原创 2022-01-23 12:21:08 · 930 阅读 · 0 评论 -
CF1100F Ivan and Burgers(线性基)
线性基与贪心的结合原创 2021-12-04 14:38:11 · 334 阅读 · 1 评论 -
P3545HUR-Warehouse Store&P4053建筑抢修(反悔贪心、堆)
解析 两道很像的题 不能说相似,只能说是一模一样 感觉有火车载客的影子 想到开个堆来维护 在供不应求时弹出要求最高的即可 T1还得输出方案针麻烦 代码 #include<bits/stdc++.h> const int N=3e5+100; const int M=2e3+100; const int mod=1e9+7; #define ll long long #define ull unsigned long long #define debug(...) fprintf(stderr,原创 2021-11-18 21:07:43 · 459 阅读 · 0 评论 -
P3243 [HNOI2015]菜肴制作(拓扑排序、贪心)
解析 很好的题 也就是我没做出来的意思 反向思维似乎是我欠缺的 这道题也是 也许做题时应该多特意往这边想想 当正向看并没有太好的性质时,也许反过来能使题目豁然开朗 容易想到暴力n方如何做 (以下均指反图) 找到1所在的点,染色找到其导出的子图,在其中再找到最小的点,再求导出图…直到子图大小为1时,把结点放到当前答案序列的开头 那么不难发现,每个点导出的子图都是占据答案序列上连续的一段,同时最小的结点会在这一段的最后 然后…我就发现不出来了… 考虑反过来想 答案序列最后一个点,必然是入度为0的编号最大的点 因原创 2021-11-18 20:56:39 · 472 阅读 · 0 评论 -
CF1415E New Game Plus(贪心)
解析 把题目标签写在数据范围上的一道题 由于k过大,显然无法dp 那就只能贪了 一开始被完全带跑偏了… 想的是把序列降序排列然后从后往前划分… 这个思路能很简单的写出nkdp 然后就卡住了… 算看了一半题解吧 看到第一段“考虑分成k组”后退出来了 有了这个线头后面就非常顺 以后还是要努力培养在推不出好的性质时打破第一印象的能力 考虑正解 清零k次等价于把boss分成不多于k组 每次把新元素加入的同时获得原来集合内元素和的代价 所以只需要维护集合的元素和即可 考虑把所有集合放入大根堆 降序加入元素 显然正的元原创 2021-11-14 23:26:18 · 200 阅读 · 0 评论 -
CF1406D:Three Sequences(贪心、构造)
解析 本题说明了样例的重要性 完全可以通过仔细观察样例得出一些结论 首先最大值显然就是max(b1,cn)\max(b_1,c_n)max(b1,cn) 考虑最优策略 如果a上升了,就让b上升 因为假设前面都拼的严丝合缝了,让c上升前面全得上升,肯定会对答案有影响,而修改b则不一定 如果a下降了,就让c下降 类似的原因,如果让b下降,就会影响到b1,那么b1小了,c1就会大,对答案产生影响 想到这些,后面维护差分就较为简单了 代码 #include<bits/stdc++.h> using原创 2021-11-11 22:38:13 · 202 阅读 · 1 评论 -
NOIP2012:疫情控制(二分、贪心、树上倍增)
解析 二分的单调性较为明显,一路推导下去的性质都不算太难想,正解的思路还是不难想到的 但从头到尾都实现很考验思维的严密性和代码能力 然后我就双重被考验挂了qwq 第一交的时候一个地方把倍增的dis数组写成pl,判断封口也有问题… 但竟然有70 真实考试的时候绝对不能出打错数组这种错!提交前还是要谨慎一些! 另外那个判封口…只能说路漫漫其修远兮了… 我对于最后根下方儿子(暂且叫它次根好了)与军队贪心匹配的地方写的和题解不太一样 题解的实现是:爬到根下方的军队不考虑,然后把所有军队提出来一起贪心 我的做法是先给原创 2021-11-07 02:35:57 · 261 阅读 · 0 评论 -
NOIP2018&洛谷P5021:修建赛道
没有证明的贪心就是乱搞 解析 把标签写在题面上的一道题… 显然要二分答案然后看能不能分出来m个 关键策略是每个结点内部尽可能的多匹配的前提下,给父亲传一个最大的 这不纪念品分组? 然后我就无脑的敲了个双指针的贪心上去 然后就WA掉了qwq (由于带限制的点太多这竟然还有80) 纪念品分组的贪心只保证了尽可能多匹配 却不能保证剩下一个最大的 一个简单的例子是较小值和次大值匹配,把最大值传上去 然而如果按照从小往大扫,每一个贪心的想与尽可能小的匹配,这样就能保证贪心的正确性了 代码 #include<.原创 2021-10-19 21:33:24 · 199 阅读 · 0 评论 -
CSP2019&洛谷P5665:划分(单调队列,高精度)
解析 自己写的时候写了二维单调队列优化的64分 一次过还是可以满意了啦 正解的关键结论是最优的方案的最后一段一定尽可能的短 原因嘛…显然 贪心的想,再最后一段的段首可以往前放的情况下肯定是要往前放的,这样代价更小,同时对后面的选取也更加有利 这个性质是可以递归的 考虑如何求以i结尾的最后一段的最短长度 设以iii为末端的最短段的上一段的段尾在posipos_iposi 设sis_isi是[1,i][1,i][1,i]的前缀和 那么posipos_iposi就是满足: si−sj>=sj−spos原创 2021-10-16 23:55:47 · 307 阅读 · 0 评论 -
CSP2020&洛谷P7076:动物园(位运算)
你知道它很水,但你就是切不掉它 解析 一直卡85!! 原因:最后判断的循环应该从0到k-1而不是从1到k! 啊啊啊一定要小心啊qwq 说实话这个分都算是好的,这种bug爆大分一点招没有 还有一个问题是对于ans=64爆unsigned ll 的特判,需要注意 (而且由于没看着限制互不相同的条件,还开了个map慢的像屎一样qwq) 睁大眼睛,注意细节!!! 代码 #include<bits/stdc++.h> using namespace std; #define ll unsigned l.原创 2021-10-14 22:50:51 · 293 阅读 · 0 评论 -
LOJ&洛谷P1248加工生产调度(贪心、Johnson 法则)
解析 和国王游戏一样的做法 容易写出cmp函数的依据: min(u.a,v.b)<min(u.b,v.a) 但是这个题的比较函数有一个取min的操作 这个东西会有一个问题:不满足不可比性的传递性 通俗的说,x=y,y=z,但是x不一定=z 比如说如果y的a和b都很小,就会出现这个无论a和c之间关系如何,等式总是成立的尴尬情况 为了避免这个东西,引入了Johnson 法则 设置d d=1(a>b) d=0(a=b) d=-1(a<b) 在d不同时,优先按照d排序(显然d不同时是正确的)原创 2021-10-08 22:48:30 · 766 阅读 · 0 评论 -
YBTOJ:灯光控制(贪心)(公倍数)(暴力枚举)
文章目录题目描述解析代码 题目描述 解析 没有想出来 首先可以确定开关要么开一次,要么不动,其他都和这俩是等价的 一开始最先想到的就是贪心的方法,每个开关遍历,如果按下会使答案变好就按下。 但是显然当前的开闭对后面是有后效性的,很容易就hack掉了 于是,我的思维就去了其他的天涯海角… 在正解的门前回了头 qwq 因为都是质数,所以假设两个开关x和y,它们一定互质 那么它们会互相影响的(也就是公倍数),一定是X*Y的整数倍 (讽刺的是这个我也发现了,就差拼在一起) 那么我们就可以发现: 对于所以大于根号n原创 2021-07-23 00:56:54 · 158 阅读 · 0 评论 -
P2048 [NOI2010] 超级钢琴(RMQ 贪心)
文章目录题目描述解析代码 传送门 题目描述 解析 首先,如果只有一个和弦,那么问题显然简单了 用前缀和结合ST表随便做做即可 然而 这次要求前k大的 怎么办呢? 参照之前有一道序列合并的做法 我们想到,可以先建一个优先队列,把以每个元素为开头的最大和弦求出来 然后每次弹出队首,再用队首的开头把加进来一些新的 问题是,我受那道题影响,觉得一定要加进来次大的 次大弹出就加第三大的,子子孙孙无穷匮也… 于是我就卡到这里了 ----------我的思路和题解的分割线------------- 但是不必拘泥与原来的原创 2021-07-17 20:51:08 · 319 阅读 · 0 评论 -
火车载客(ybtoj-二叉堆)
文章目录题目描述解析我的思路代码题解思路 题目描述 解析 我的思路 其实就是线段覆盖的一个变体 贪心的想: 把游客按右端点升序排序 后面的证明就和线段覆盖一样了 如果有两个游客冲突 我们应该选右端点靠右的 因为这样对以后继续在右边出现的游客来说肯定不会更差 然后就是对于能否上车的判断 其实就是一个对区间的修改与最大值查询 就非常自然的想到了线段树 时间复杂度:nlogn 代码 #include<bits/stdc++.h> using namespace std; #define ll lon原创 2021-05-29 00:34:54 · 223 阅读 · 4 评论 -
选数游戏(ybtoj-二叉堆)
文章目录题目描述解析 题目描述 解析 一道很考验代码能力与思维的题 (我不是在为自己的菜找理由) 首先由于可以每一列都有类似于环的性质 所以我们可以忽略点的纵坐标 从前往后枚举选点结束的位置 首先每个列都得 ...原创 2021-05-28 16:14:13 · 580 阅读 · 2 评论 -
贪心: Array Splitting(数列分段)(洛谷CF1175D)
解析 这题可以转化一下: (《神笔马良》。。。。) 计算这些长方形对应下标的总加和 我们可以一层一层往上垒,假设第i层起始点为xi,总和为sumi,再设从1到i的前缀和为si 显然第一层x1=1,sum1=sn 对于第二层x2,sum2=tot[x2,n]=sn-s[x2-1] 对于第三层x3,sum3=sn-s[x3-1] 。。。 对于第k层xk,sumk=sn-s[xk-1] 最后累加sum即答案 显然答案整理一下应为k*sn-(s[x2-1]+s[x3-1]+…+s[xk-1]) 要使ans最大,.原创 2021-01-25 21:44:51 · 239 阅读 · 1 评论 -
日志:贪心
排队接水 时间限制: 1 Sec 内存限制: 128 MB 题目描述 有n 个人在一个水龙头前排队接水,假如每个人接水的时间为ti ,请编程找出这n 个人 排队的一种顺序,使得n 个人的平均等待时间最小。 输入 第一行为n(1<=n<=5000)。第二行分别表示第1 个人到第n 个人每人的接水时间t1, t2…,tn,每个数据之间有一个空格。(0<=ti<=10000) 输出 共两行,第一行为一种排队顺序,即1 到n 的一种排列,且保证小序号靠前(如:“2 3” 与“3 2”,在平均原创 2021-01-19 23:51:53 · 280 阅读 · 0 评论 -
priority_queue+贪心:运输(题解)
解析 不难发现每次都应合并最大的一对,从而使局部最优带动整体最优 sort就会很自然的想到 但是问题是合并完之后的新值可能已经不是当前最大了(WA。。qwq) 于是想到每次循环sort一遍,结果n^2logn又超时了。。。 在一位高人的指引下,我学废了赖皮的priority queue(具体见代码) 代码 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #inclu.原创 2021-01-19 22:57:46 · 293 阅读 · 0 评论
分享