贪心
~
verdin黄大锤
afo啦!
展开
-
cf1628 C. Grid Xor
Note: The XOR-sum of set {s1,s2,…,sm} is defined as s1⊕s2⊕…⊕sm, where ⊕ denotes the bitwise XOR operation.After almost winning IOI, Victor bought himself an n×n grid containing integers in each cell. n is an even integer. The integer in the cell in the i.原创 2022-01-23 21:52:59 · 846 阅读 · 2 评论 -
洛谷1645 序列
题目:题目描述有一个整数序列,它的每个数各不相同,我们不知道它的长度是多少(即整数个数),但我们知道在某些区间中至少有多少个整数,用区间(Li,Ri,Ci)来描述,表示这个整数序列中至少有 Ci 个数来自区间[Li,Ri],给出若干个这样的区间,问这个整数序列的长度最少能为多少?输入输出格式输入格式:第一行一个整数N,表示区间个数;接下来N行,每行三个整数(Li,Ri,Ci),描...原创 2018-09-27 20:38:53 · 472 阅读 · 0 评论 -
洛谷 P1182 数列分段`Section II`
题目:数列分段Section II思路:二分+贪心。代码:#pragma GCC optimize (2)#include<bits/stdc++.h>using namespace std;#define maxn 100000#define read(x) scanf("%d",&x)int n,m;int a[maxn+5];bool judg...原创 2018-10-09 20:54:27 · 175 阅读 · 0 评论 -
普及组2015 洛谷 P2672 推销员
题目:推销员思路:贪心。要取到最大的疲劳度只有两种情况,一是全部取a最大的,二是取一个远的,再剩下的取a最大的。先关于a对于住户从大到小排序。定义:sums[i]:从i到i之后,a+2*s的最大值suma[i]:从1到i,2*s的最大值sum[i]:从1到i的a之和预处理出这三个数组,枚举x。考虑第一种情况,由于a是从大到小排过序的,所以答案就是 ∑i=1xai+2×max...原创 2018-10-26 20:15:36 · 249 阅读 · 0 评论 -
noip 2009 洛谷 P1071 潜伏者
题目:潜伏者思路:用个map搞一搞就好了。代码:#include<bits/stdc++.h>using namespace std;#define maxn 100map<char,char> mp,mp2;char a[maxn+5],b[maxn+5],c[maxn+5];int n,m;int main() { scanf("%s%s%...原创 2018-10-31 16:34:44 · 283 阅读 · 0 评论 -
2018/10/30 膜你赛 咒语
题目:题目描述亮亮梦到自己来到了魔法城堡,但一扇巨大的石门阻拦了他通向城堡内的路。 正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条。 亮亮拿起纸条的一端,只见上面写着打开机关的方法:“打开机关需要念动符咒,咒语是一串长为 L 的由 0 和 1 组成的字符串。在这张长纸条上列了 n 个 长为 L 的字符串,正确的咒语即是在纷繁的 2^L 种字符串中,与这些纸条上的 字符串相异度之...原创 2018-10-30 20:45:10 · 241 阅读 · 0 评论 -
洛谷 P2577 [ZJOI2005]午餐
题目:午餐思路:先贪心,由于打饭的时间是一定,所以差别就在吃饭的时间,所以吃的慢的人先打饭一定更优。然后dp。f[i][j]:前i个人,第一个队列打饭时间为j的最少总时间。可以降维。代码:#include<bits/stdc++.h>using namespace std;#define read(x) scanf("%d",&x)#define maxn...原创 2018-11-08 19:51:06 · 198 阅读 · 0 评论 -
洛谷 P2279 [HNOI2003]消防局的设立
题目:消防局的设立思路:以前类似的题目都写的dp,第一次写贪心。就是从最深的点开始,如果到最近的有消防局的点的距离大于2,就在它祖父那里设一个消防站。代码:#include<bits/stdc++.h>using namespace std;#define read(x) scanf("%d",&x)#define maxn 1000struct srt{...原创 2018-12-05 16:37:36 · 92 阅读 · 0 评论 -
Codeforces Round #527 (Div. 3) CF1092B Teams Forming
题目:Teams Forming思路:贪心就好了,把长度最相近的两根配对一定是最优的。代码:#include<bits/stdc++.h>using namespace std;#define read(x) scanf("%d",&x)#define maxn 100int n;int a[maxn+5];int main() { read(n);...原创 2018-12-19 13:51:01 · 263 阅读 · 0 评论 -
CF1093C Mishka and the Last Exam
题目:Mishka and the Last Exam思路:其实,这就是个贪心…把a[i]尽量取小,a[n-i+1]取大就好了。代码:#include<bits/stdc++.h>using namespace std;#define read(t) scanf("%d",&t)#define readll(t) scanf("%lld",&t)#d...原创 2018-12-21 21:42:57 · 206 阅读 · 0 评论 -
Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) C Connect Three
题目:Connect Three思路:模拟。可以先把ABC三点按照横坐标排序,然后在A和B之间连一条先向左后向上的路,同理在B和C之间连一条先向下后向右的路。最后统计一下。我们假设横着的那一段距离是一定要走的,要尽可能的省下竖着的那一段距离的花费,就让两条路线竖着的部分尽可能的重合。所以我们把这一段都安排在B点那一列就好了。代码:#include<bits/stdc++.h&...原创 2018-12-24 13:11:59 · 218 阅读 · 1 评论 -
巧克力
题目:题目描述奶牛 Rick 有 N 块巧克力,从左往右排成一行。第 i 块巧克力的颜色是 color[i]。 我们定义一个参数 MaxLen,它表示:具有相同颜色的连续一段巧克力的最大长度。 例如:有 10 块巧克力,颜色分别是: ADDDABBAAB,那么 MaxLen=3,因为有 3 块颜色是 D 的巧克力,而且这3块巧克力的位置是连续的。为了使得 MaxLen 最大,Rick 可以交换...原创 2019-01-03 20:00:38 · 275 阅读 · 0 评论 -
CF1108D Diverse Garland
题目:CF1108D Diverse Garland思路:贪心,如果一个字符和它前面的字符一样,则需要修改成一个和它前后都不一样的字符。代码:#include<bits/stdc++.h>using namespace std;#define maxn ((int)(2e5))int n;char a[maxn+5];char c[4]={' ','R','...原创 2019-01-27 13:44:09 · 296 阅读 · 0 评论 -
洛谷 P3254 圆桌问题 (网络流24题)
题目:圆桌问题思路:贪心,优先考虑人数多的团体,优先放在人数多的桌子上。如果不嫌麻烦考虑网络流做法,只需把起点和所有团体连人数的边,团体和桌子连1,桌子和汇点连容量边跑最大流就好。美丽的贪心代码:#include<bits/stdc++.h>using namespace std;#define maxn 300#define read(x) scanf("%d",&...原创 2019-02-25 22:12:47 · 225 阅读 · 0 评论 -
Codeforces Round #510 (Div. 2) C. Array Product (codeforces 1042 C)
题目:Array Product题意:给出一个序列(元素可负,可为0),以及两个操作:一、合并两个元素,得到的元素在靠后的元素的位置,值为之前两个元素值的乘积。二、删除一个元素(此操作最多进行一次)。现要求输出任意一种操作,使得剩余的一个元素的值最大。思路:看了很久后可以得到:一般的,0对答案没有贡献,可以全部删除。如果负数的个数为偶数,那么这些负数可以全部保留。如果负数的个数...原创 2018-09-19 21:02:14 · 173 阅读 · 0 评论 -
Codeforces Round #510 (Div. 2) A. Benches (codeforces 1042 A)
题目:Benches题意:有n个椅子,每个椅子上初始坐了aia_iai个人,现在又过来了m个人。定义k为坐的人最多的椅子上的人数,要求安排m个人的位置来最小化/最大化k。思路:贪心。最大化就是把m个人都安排到初始最多的椅子上,最小化就是不断的处理人最少的椅子,并把它的人数加一,直到加的人数等于m,再求现在的k。代码:#include<bits/stdc++.h>usin...原创 2018-09-18 21:40:34 · 342 阅读 · 0 评论 -
Manthan, Codefest 18 (rated, Div. 1 + Div. 2) B. Reach Median (cf 1037 B)
题目:Reach Median题意:给出一个长度为n的序列和一个整数k,求最少需要多少次操作可以把序列的中位数变成k。一次操作定义为将序列中的任意一个数+1或-1。思路: 经过观察可以知道,不改变序列元素之间的相对大小是更优的选择。 先对序列进行排序。 如果当前中位数小于k,那么就把它加到k,为了保证序列的相对大小不变,需要把它后面小于k的数都加到k。大于k时同理。代码:...原创 2018-09-03 16:20:51 · 203 阅读 · 0 评论 -
洛谷 P1250 种树
题目:种树思路:贪心,优先把树种到区间相交处。代码:#include<bits/stdc++.h>using namespace std;#define maxn 30000#define maxm 5000struct House{ int l,r,t; bool operator < (const House& oth) const { retur...原创 2018-07-14 13:44:30 · 400 阅读 · 0 评论 -
洛谷 P1230 智力大冲浪
题目:智力大冲浪题意:刚开始没看懂……摘自~Lanly~①. 4 70②. 2 60③. 4 50④. 3 40⑤. 1 30⑥. 4 20⑦. 6 10其中第一列为编号,第二列为规定期限ti,第三列为未完成的赔钱。显然,对于第一个时段,我们最优解是完成第五个游戏,这样赔钱数为0,已完成游戏⑤。对于第二个时间段,我们最优解是完成第二个游戏,这样赔钱数还是为0,已完成游戏⑤②。对于第三个时间段同理已...原创 2018-07-14 13:48:21 · 306 阅读 · 0 评论 -
洛谷 P1717 钓鱼
题目:钓鱼题意:刚开始没读懂……就是说有一排鱼塘(i~n),每一个鱼塘初始鱼的数量为fi,在这个鱼塘中每钓5分钟鱼的数量都会减少di,且从第i个鱼塘走到第i+1个鱼塘要用ti的时间。问从第一个鱼塘开始走,到任意一个鱼塘结束,最多可以获得的鱼的数量。思路:%%% luogu大佬 超神火星人 的博客枚举最后最哪儿结束,对于这一段鱼塘[1,m],由于钓鱼的顺序并不影响最终结果,所以不往回走是最优的。那么...原创 2018-07-15 15:49:33 · 337 阅读 · 0 评论 -
CF460C Present
题目:Present思路: 二分答案+贪心。 注意在LL范围类二分。代码:#include<bits/stdc++.h>using namespace std;#define maxn 100000#define ll long longint n,m,w;int a[maxn*2+5]= {0};ll tg[maxn*2+5]= {0};boo...原创 2018-08-10 15:45:33 · 279 阅读 · 0 评论 -
CF954G Castle Defense
题目:Castle Defense思路: 二分+贪心。注意LL的应用。代码:#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;#define maxn 500000#define ll long long#define inf ((1LL)&amp;lt;&amp;lt;60)ll n,r,k;ll a[maxn*3+5],c[ma...原创 2018-08-10 20:29:05 · 431 阅读 · 0 评论 -
AGC006D AT2165 Median Pyramid Hard
题目:Median Pyramid Hard思路: 二分金字塔顶的数字mid,将大于等于mid的数看做1,小于mid的数看做0。 对于此时的01序列,假设有两相邻数字相同,那么塔顶的数等于离中心最近的相邻数字对的数。 如果没有两数相邻,塔顶的数等于最左边的数(最右边的数也可以)。数据生成器:#include&lt;bits/stdc++.h&gt;using namespa...原创 2018-08-10 22:37:33 · 234 阅读 · 0 评论 -
CF767E Change-free
题目:Change-free思路: 贪心。 先先假设全部用硬币支付,再用优先队列维护,当硬币数量不够时,弹出会增加的生气值最小的。代码:#include<bits/stdc++.h>using namespace std;#define maxn 100000#define ll long longstruct Pair{ ll x,w; ...原创 2018-08-14 15:00:16 · 328 阅读 · 0 评论 -
HDU 6335 Nothing is Impossible
题目:Nothing is Impossible思路:将二元组以y为第以关键字排序, 从前向后乘以(y+1)直到超过总人数。代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define maxn 100struct Pair{ int x,y; Pair()...原创 2018-08-14 16:29:52 · 185 阅读 · 0 评论 -
ACM赛 CF gym 101341 M Last Man Standing
题目:Last Man Standing思路: 贪心,靠后的人尽量杀更靠后的人。 即将数组从后往前扫,对于每一个人i,都被此时最靠后的杀人数不为0的人杀,并且杀人的人杀人数减1。 判断不成立的条件是杀人总数大于等于总人数。 注意下统计杀人总数时要用long long存储,比赛时就这样WA掉了…代码:#include<bits/stdc++.h>using na...原创 2018-08-02 21:20:31 · 309 阅读 · 0 评论 -
Astar2018 初赛R2T4 p1m2
题目:度度熊很喜欢数组!! 我们称一个整数数组为稳定的,若且唯若其同时符合以下两个条件: 1. 数组里面的元素都是非负整数。 2. 数组里面最大的元素跟最小的元素的差值不超过 1。 举例而言,[1,2,1,2] 是稳定的,而 [−1,0,−1] 跟 [1,2,3] 都不是。 现在,定义一个在整数数组进行的操作: * 选择数组中两个不同的元素 a 以及 b,将 a 减去...原创 2018-08-15 20:15:37 · 236 阅读 · 0 评论 -
CF484A Bits
题目:Bits思路:每次将L的最右边的0变为1,当L>R是退出。代码:#include<bits/stdc++.h>using namespace std;#define ll long longll L,R;void readin() { scanf("%lld%lld",&L,&R);}ll slv(){ l...原创 2018-08-13 14:12:52 · 154 阅读 · 0 评论 -
洛谷 P1565 牛宫
题目:牛宫思路: 咳咳,先放个提交记录…… 嗯再来个mjy0724的思路: 然后就没我什么事了 有这么几点需要注意的地方: 1、vector一定不能作为参数传进函数,会T到飞起,亲测100-&gt;50 2、第一列数要单独判断 3、前缀和的处理,[i,j]的字段和大于0的条件是sum[j]&gt;sum[i-1]而非sum[j]&gt;sum[i]数据生成器:#i...原创 2018-08-13 22:15:18 · 271 阅读 · 0 评论 -
洛谷 P3155 [CQOI2009]叶子的染色
题目:叶子的染色思路: 嗯首先每个节点都只有3种状态:白色、黑色、无色。 个人感觉选择根节点不太好处理,那我们先讨论假如根节点确定的情况。 我们先假设一个节点的所有儿子都有颜色,来看一下选择的情况。 如图(日常毁图祭),w代表white,b代表black。此时可以改变fa以及son的颜色,考虑局部最优的情况: 首先可以知道,儿子的颜色不可改变,但是可以去掉。即一个儿子已经被染...原创 2018-08-30 16:35:42 · 362 阅读 · 0 评论 -
洛谷 P1094 纪念品分组
题目:纪念品分组思路:贪心,每次都把最小的和最大的分为一组,如果超出限制,只能把大的单独分为一组。代码:#include<bits/stdc++.h>using namespace std;#define maxn 30000int w,n;int a[maxn+5]={0};void readin(){ scanf("%d%d",&w,&n); f...原创 2018-07-14 13:42:42 · 323 阅读 · 0 评论