随笔分类 -  信息学竞赛 / 贪心

摘要:简单数学题,注意分类讨论即可,把特殊情况考虑清楚。 #include<bits/stdc++.h> using namespace std; int main(){ double a,v,l,d,w; cin>>a>>v>>l>>d>>w; if(v<=w){ double sp=sqrt(2*a* 阅读全文
posted @ 2021-05-24 15:23 zjxxcn 阅读(48) 评论(0) 推荐(0) 编辑
摘要:贪心, 从左到右扫描,每个问号默认都变成右括号,如果左括号不够,那么就用前面的右括号去换左括号代价是-b+a,找代价最小的(set或者堆维护)。 #include<bits/stdc++.h> using namespace std; int const N=50000+10; char s[N]; 阅读全文
posted @ 2021-05-24 12:11 zjxxcn 阅读(38) 评论(0) 推荐(0) 编辑
摘要:Beijing2011 元素(bzoj 2460) 1 题目描述 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术。那时人们就认识到,一个法杖的法力取决于使用的矿石。 一般地,矿石越多则法力越强,但物极必反:有时,人们为了获取更强的法力而使用了很多矿 阅读全文
posted @ 2020-06-09 21:51 zjxxcn 阅读(144) 评论(0) 推荐(0) 编辑
摘要:题目大意: 给你一个n*m的矩阵,每个格子可以向上下左右走,格子可以重复经过,但是不能走过同一条路。 问是否存在从左上角开始的的路径,如果存在,就输出这个路径,用重复次数+方向(长度不超过4),才表示路径。 题解:我们发现可以走完所有的方向,比如我们可以不断向右走,然后不断向左走,然后向下,然后不断 阅读全文
posted @ 2020-03-16 14:46 zjxxcn 阅读(115) 评论(0) 推荐(0) 编辑
摘要:题目大意:长度为n的序列,有m个1,问最多可以有多少子序列至少包含1个1。 很明显,我们要平均分配0这样肯定是最优的。 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 int const N=1e5+ 阅读全文
posted @ 2020-03-15 17:33 zjxxcn 阅读(106) 评论(0) 推荐(0) 编辑
摘要:https://codeforc.es/problemset/problem/1217/C 这题明显是$O(nlogn)$的做法,因为二进制的位置还是很有限的,首位连续的0我们可以用前缀和来判断。 1 #include <bits/stdc++.h> 2 using namespace std; 3 阅读全文
posted @ 2019-09-29 14:11 zjxxcn 阅读(131) 评论(0) 推荐(0) 编辑
摘要:https://codeforc.es/problemset/problem/1216/F 有直线上n个位置,每个位置上可以花费i的代价使得联网,某些位置可以放置路由器,放路由器的代价也是i,放置了路由器以后,可以让[i-k,i+k]的范围内上网,要求每台电脑都可以上网,最少需要多少代价。 思路: 阅读全文
posted @ 2019-09-28 01:07 zjxxcn 阅读(288) 评论(0) 推荐(0) 编辑
摘要:https://codeforc.es/problemset/problem/1216/D 贪心: 找出最大的a[i],令为t,即假设这个t就是原来的x 然后b[i]=t-a[i]; b[i]表示每个缺了的数量。 最后求一个所有b[i]的最大公约数。 答案就是累加b[i]/gcd 1 #includ 阅读全文
posted @ 2019-09-27 13:18 zjxxcn 阅读(190) 评论(0) 推荐(0) 编辑
摘要:https://codeforc.es/problemset/problem/1216/B 这题还是贪心,直接排序即可 。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int const N=1000+10; 4 int a[N],n,b[N 阅读全文
posted @ 2019-09-26 22:14 zjxxcn 阅读(178) 评论(0) 推荐(0) 编辑
摘要:https://codeforc.es/problemset/problem/1216/A 本题直接$O(n)$贪心。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int const N=200000+10; 4 char s[N]; 5 i 阅读全文
posted @ 2019-09-26 22:04 zjxxcn 阅读(147) 评论(0) 推荐(0) 编辑
摘要:http://codeforces.com/problemset/problem/1217/E 这题的思路是: 1.首先不能有进位 2.由于要求和最小,所以我们只要选择两个数就可以了。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int co 阅读全文
posted @ 2019-09-21 01:17 zjxxcn 阅读(160) 评论(0) 推荐(0) 编辑
摘要:http://codeforces.com/problemset/problem/1217/D 这题的思路是构造,我们可以知道颜色最多只需要两种,然后按照dfs的顺序。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int const N=50 阅读全文
posted @ 2019-09-21 01:14 zjxxcn 阅读(247) 评论(0) 推荐(0) 编辑
摘要:4484: [Jsoi2015]最小表示 Description 【故事背景】还记得去年JYY所研究的强连通分量的问题吗?去年的题目里,JYY研究了对于有向图的“加边”问题。对于图论有着强烈兴趣的JYY,今年又琢磨起了“删边”的问题。【问题描述】对于一个N个点(每个点从1到N编号),M条边的有向图, 阅读全文
posted @ 2019-08-27 14:48 zjxxcn 阅读(168) 评论(0) 推荐(0) 编辑
摘要:Description Everyone knew it would only be a matter of time. So what? Faced for years on, a peril becomes the every-day reality. It loses its meaning. 阅读全文
posted @ 2019-07-25 01:47 zjxxcn 阅读(179) 评论(0) 推荐(0) 编辑
摘要:Description Input 第一行两个数,C和N 第二行3个数,a1,b1,c1 第三行3个数,a2,b2,c2 第一行两个数,C和N 第二行3个数,a1,b1,c1 第三行3个数,a2,b2,c2 Output 一个整数代表最长的那一次嚎叫 一个整数代表最长的那一次嚎叫 Sample In 阅读全文
posted @ 2019-07-05 09:22 zjxxcn 阅读(86) 评论(0) 推荐(0) 编辑
摘要:Description 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排。游戏由两个人进行,两人轮流操作,每次操作者都可以从最左或最右的一堆中取出若干颗石子,可以将那一堆全部取掉,但不能不取,不能操作的人就输了。 Orez问 阅读全文
posted @ 2019-06-24 14:44 zjxxcn 阅读(205) 评论(0) 推荐(0) 编辑
摘要:Description 公交车一共经过N(1<=N<=20000)个站点,从站点1一直驶到站点N。K(1<=K<=50000)群奶牛希望搭乘这辆公交车。第i群牛一共有Mi(1<=Mi<=N)只. 他们希望从Si到Ei去。 公交车只能座C(1<=C<=100)只奶牛。而且不走重复路线,请计算这辆车最多 阅读全文
posted @ 2019-04-04 09:19 zjxxcn 阅读(185) 评论(0) 推荐(0) 编辑
摘要:Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低。”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai、bi 第一行一个整数n,接下来n行每行两个整数,第i+1行的 阅读全文
posted @ 2019-03-30 01:17 zjxxcn 阅读(150) 评论(0) 推荐(0) 编辑
摘要:题目大意: 给你一个不超过20万个点树,要求给每条边染色,要求最多不能有超过k个点他们的边染了相同的颜色。 求最少需要多少颜色和具体方案。 思路: 树上边的染色问题,其实很容易, 如果没有k的限制,所有点里面最大的度数就是我们的答案。 现在有k的限制,我们只要度排名在n-k的点的度是多少就我们的答案 阅读全文
posted @ 2019-03-28 16:57 zjxxcn 阅读(115) 评论(0) 推荐(0) 编辑
摘要:题目大意 : 给你最多不超过1500个整数,求出最多的不相交的区间,使得每个区间和都是一样的。输出方案,任意方案都可以了。 思路: 我们可以把每个区间和都计算出来,然后放到相应的位置。 对于区间和相同的区间,我们从左到右做一次贪心寻找最多可以留下的不相交的区间。 1 #include<bits/st 阅读全文
posted @ 2019-03-28 13:38 zjxxcn 阅读(234) 评论(0) 推荐(0) 编辑