ACM_Contest
Nero___
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #214 (Div. 2)
题目链接代码链接A:枚举4个门的守卫,看一下钱够不够贿赂,够的话就把多余的前全给第二个人B:统计一下Sum[i%k],取最小的那个i,则答案为i%kC:方程转化为 sigma(ai-k*bi) = 0,以ai-k*bi为容量,ai为价值,背包一遍D:虽然l,r的范围很大,但是边最多3000条,则可行区间的左右端点的取值必然在这3000*2个值内。因此,枚举3原创 2013-11-25 09:52:30 · 1253 阅读 · 0 评论 -
The 14th Zhejiang University Programming Contest
比赛链接原创 2014-04-06 20:38:02 · 1927 阅读 · 0 评论 -
ZOJ Monthly, March 2014
A:小型模拟,队友写的B:转化到十进制后暴力sqrt(n)判素数,可行的原因是,后面都不是素数。。队友写的D:二分图最大权独立集对于x^y为奇数的点i和点j,xi^yi^xj^yj为偶数,而p也为偶数,所以gcd至少为2,所以奇数点之间互不冲突对于x^y为偶数的点同理因此将互相冲突的点之间连边,可以得到一个二分图,做最大权独立集 == 总权和-最小割 E:将原创 2014-03-02 21:30:51 · 1810 阅读 · 4 评论 -
Codeforces Round #232 (Div. 1) ABCD
题目链接代码稍后补上个人感觉本场题目的排列真是坑爹啊。。CD明显应该和AB换个位置- -bA:将所有数分解质因数并统计每个质因数的个数,对于质数pi,有ci个,设f(ci)表示把这ci个相等的数放到n个箱子里的方法种数(C(ci+n-1,n-1)),那么答案就是f(c1)*f(c2)*....f(cn)B:对于相邻的两个质数pi和pi+1,他们之间的数字个数为pi+1 -原创 2014-02-27 18:06:45 · 1565 阅读 · 0 评论 -
Codeforces Round #200 (Div. 1)
题目链接代码链接A:串联一个电阻:(a+b)/b并联一个电阻:a/(a+b)那么a>=b时连续串联a/b个,a那么只要修改一下欧几里得就可以了gcd(a,b): return b==0 ? 0 : a/b+gcd(b,a%b)B:目标状态是'++...++',能发现偶数个'+'或者偶数个'-'连在一起时,是可以随便转化的('++++' -> '----原创 2014-02-04 16:53:56 · 1386 阅读 · 0 评论 -
Codeforces Round #213 (Div. 1) ABCD
题目链接代码链接A:考虑对于矩形(x,y,z,t):sum = sigma( sigma( si * sj ) ) xB:容易知道能获得的最大价值,把不可能拿到的物品都去掉,不会求的去面壁。。首先知道对于任意的交换,一定要使手上的价值增大,否则交换是浪费时间。由于每次交换的都是一个集合,是不是可以考虑这样的贪心:我将所有的物品相互组合变成背包,然后通过交换背包来使当前的原创 2013-11-20 20:06:12 · 1365 阅读 · 0 评论 -
Codeforces Round #223 (Div. 1) ABCD
题目链接代码链接A:操作2的L范围在1~10W之间,也就是说当序列长度达到10W之后,接下来的操作就只需要存标记就好。B:对于操作2,将他之前的操作1都枚举一遍,如果与当前询问的子树有交,则将该x[i]加入set中。关于如何判断有交,操作2的level小于操作1的level并且对应到最底层的两个区间有交集即可。时间复杂度O(n^2lgn)。C:记cnt为区间[L原创 2014-01-13 21:39:16 · 1420 阅读 · 0 评论 -
Codeforces Round #220 (Div. 2) ABCD
题目链接代码链接A:从点s能走到点t必须满足他们的x坐标之差是a的倍数,y坐标之差是b的倍数,并且这两个倍数之差是偶数(如果是奇数一定无法到达t点),然后还要判断是否s点在x维或y维是否有活动范围,如果一步都无法跨出显然也是不行的。枚举4个角落作为t点取最小值即可。B:这道我写的dp。设状态f[N][2]表示到第i个数为止,第i个数还能否用于后面的合并,的最大合并数量以原创 2013-12-21 00:39:58 · 1816 阅读 · 4 评论 -
Codeforces Round #219 (Div. 1) ABCD
A:排序,二分装在袋子里的袋鼠数量,然后用可看见的最大的袋鼠装袋子里最大的袋鼠判断可行性。#include #include #include using namespace std;const int N = 501000;int n,a[N];bool check(int p) { for (int i = p-1; i >= 0; i --) {原创 2013-12-14 14:06:49 · 1405 阅读 · 0 评论 -
Codeforces Good Bye 2013
题目链接A:B:C:D:设串s的‘AC’数量为cnt,则容易发现 s[i].cnt = s[i-2].cnt + s[i-1].cnt + (s[i-2]以‘A’结尾 && s[i-1]以‘C’开头),因此只需要枚举s[1]和s[2]的cnt数量,是否以'C'开头,是否以‘A’结尾,然后递推计算s[k],判断s[k].cnt是否等于x即可。比赛的时候很逗的抽象成了斐波那原创 2014-01-02 10:59:29 · 1236 阅读 · 0 评论 -
Codeforces Round #221 (Div. 1) ABCD
题目链接代码链接A:其实很容易猜到,1 6 8 9这四个数字的排列A能够满足 (i*10000 + A)%7 == 0,那么好了,按照其他数字任意排列后对7取余的结果来安排这4个数字的顺序,最后把所有的0输出即可。B:O(n^2)求出f(i,j) : 位置i,j向右有多少个连续的1。因为可以对行重新排列,因此对于每一列j,将f[j]的n个数排序,按从大到小来构造矩形,取最大原创 2013-12-28 00:23:29 · 2002 阅读 · 0 评论 -
Codeforces Round #222 (Div. 1) ABD
题目链接A:显然的思路是从网格中最角落的格子开始一个一个的改成'X',那么怎么判断格子在角落呢?就是从任意空格子bfs一遍后队列最后面的k个格子。B:二分天数day判断可行性。关于如何判断:从大于最大ai的student里面选一个有最小c值的student,用他解决当前最大的day个bug,然后a数组的最大值变小,则可选的student变多,以此循环。若某个时刻bug还有剩,但是当原创 2013-12-31 01:22:45 · 1429 阅读 · 0 评论 -
2010 Regional Harbin
3660:遍历一遍树,对于轮到A选的点,从子树中选最小值,对于轮到B选的点,从子树中选最大值,直到走到叶子为止,沿途把不合法的值剪掉。3661:贪心,可以证明每次选择最大的A和最小的B,得到的结果是最优的。3664:DP,设状态f[i][j]为前i个数有j个比下标小的排列方案的种数,答案为f[n][n-k]。转移的时候,考虑从f[i-1][j]推到下一层,新加入数i,那么用原创 2013-11-14 19:52:54 · 1152 阅读 · 0 评论 -
Codeforces Round #211 (Div. 2) ABCD
题目链接代码链接A:模拟简单算盘B:找最大连续k数和的下标C:贪心。从左往右考虑,考虑连续相同段,若大于等于3个连续,则必须删到剩2个,若出现...AABB这种,则删掉后面的B,变成...AAB。D:因为小伙伴买车时若不够钱就会从budget补,因此若存在一种买x辆车的方法,即是说通过合理的安排能够使budget>=0,换句话说,若存在一种尽量花小伙伴钱的方原创 2013-11-19 16:18:23 · 1141 阅读 · 0 评论 -
Codeforces Round #208 (Div. 2) ABCD
题目链接代码链接A:1000个点组成999条线段,直接暴力判是否有线段相交B:按题目描述构造出没有随机字母的a串,检查a是否为b的子序列。再判一下a,b串的组成合法性C:差不多就是模拟题。对于当前需要处理的两个0之间的区间,找出前三大数的位置,然后把第一个大数放到queue头,把第二个大数放到deque头,第三个大数放到stack顶,其他的元素看着随便放就好了。如果原创 2013-11-25 18:39:41 · 894 阅读 · 0 评论 -
Codeforces Round #212 (Div.2)
代码链接A:从第一个骑士广搜到第二个骑士,如果他们的距离是偶数则可行。B:判断是否有三个连续污点,特判起点终点。C:插入排序的' swap '次数就是逆序对数,那么现在的目标就是交换两个数以使逆序对尽量少。暴力统计[l.r]区间里大于左端点的数有多少,大于右端点的数有多少,则相应小于左右端点的数的个数也知道了,那么++--一下更新答案即可。n^2随便搞。D:贪心原创 2013-11-17 18:14:13 · 1005 阅读 · 0 评论 -
Codeforces Round #148 (Div. 1) ABC
A:记S[i] 表示位置从0~i的数的异或值,则 i~j 的异或值等于 S[i-1]^S[j]。要找出满足任意区间异或值都不为0的序列,则转化成满足任意S[i-1] != S[j]的序列。因此答案为 A(n,2^m-1)。B:要使最大值与最小值差值最小,则是使最大值尽量小,最小值尽量大。将数组从小到大排序,则当前最大值为 a[n]+a[n-1],最小值为 a[1]+a[2]。显然任何改原创 2013-11-22 22:09:00 · 893 阅读 · 0 评论 -
Codeforces Round #204 (Div. 1)
题目链接代码链接A:贪心。考虑一般情况(即每个数都有小数)题目要求的值即是所有的小数部分之和-n,但是由于有整数的存在,整数可以向上取整,也可以向下取整,因此若有x个整数,则有x个可选择的'1',借此来调整answer使其绝对值最小。B:显然跟逆序对有关,每次交换要么逆序对加1,要么减1。设 dp[i] 为逆序对数为i时的期望,则 dp[i] = dp[i-2]*0.5原创 2013-11-18 19:18:54 · 1124 阅读 · 0 评论 -
Codeforces Round #240 (Div. 1) ABCD
题目链接A:把原创 2014-04-07 21:20:58 · 1006 阅读 · 0 评论