Codeforces
文章平均质量分 63
haha593572013
这个作者很懒,什么都没留下…
展开
-
Croc Champ 2013 - Round 2 题解
题目链接:擒贼先擒王,每次赛后总结CF的题,我都喜欢先搞E题,而且E题一般是我最爱的数据结构题,搞起来特爽E题:给你一棵树,求满足距离之和类似的题目:http://poj.org/problem?id=1741 方法是点的分治,具体参考漆子超的论文,分治算法在树的路径中的应用,论文里面已经讲了很详细了会了poj 1741的话,其实这道题就是多了一个限制,还是排序,扫描,不过在求原创 2013-04-24 03:08:09 · 1617 阅读 · 0 评论 -
Codeforces Round #124 (Div. 2) (Div.1)
ps:D题挂了,最后只有三个。。。。E题是赛后看着一群大神的代码YY的(网上找不到题解,好奇怪,肿么都没人写的) 之所以这么迟是因为一直在纠结E题A:如果第一个人能放,那就放在中间的位置,然后第二个人不管放哪第一个人总有对称的放法B:水题C:简单贪心,错了一次D:给你一幅图,假如在地板上铺上无限的同样的图,判断从S出发能否走到无限远的地方只需要判断能否从一幅图的一个原创 2013-08-19 18:58:11 · 755 阅读 · 0 评论 -
codeforces 121 (比赛) codeforces 191C
哎,CF终于变色了A题:我写了个二分,囧。。。B题:模拟题,水C题:想了半天,水王(一学长)告诉我是DP,果断敲了dp[i][j]表示i字符走到j字符最大的权值View Code int dp[30][30];int max(int a,int b){ return a>b?a:b;}int main(){ int n,i,j,k;原创 2013-08-19 18:57:48 · 1001 阅读 · 0 评论 -
Codeforces Beta Round #13 Problem E Holes(平衡的思想)
题目链接题目大意:给你n个洞,进入某个洞后会跑到另一个洞,到了另一个洞之后又可能会继续到下一个洞,问你从一个洞进去,钻了几个洞才会出来,在哪个洞出来n 个整数a[i] 表示进入i这个洞之后会跑到 i+a[i]....当然,题目不会这么简单,还有一个操作就是更新某个点的power,也就是a[i]的值。直接模拟的话肯定不行想了想,询问可以变成O(1),但是更新操作代价是O(n)的原创 2013-04-15 20:16:35 · 1405 阅读 · 1 评论 -
Codeforces Round #180 (Div. 1)(完全)
题目链接ps:这场的题解非常nice啊,还提供了各种插图,在理解的过程中感受了出题人思维的强大啊官方题解非常非常非常非常非常难的比赛,反正还是由于我太弱了。。。 A:略B:略C : 构造题,看到下面这张图片就懂了。。。。深蓝色的部分是unique的,大红色的部分也是unique的,各占据了三分之二。。。。。D:构造题如果k=1,那么就是无原创 2013-04-22 02:34:53 · 1382 阅读 · 0 评论 -
2013, VI Samara Regional Intercollegiate Programming Contest
题目链接呵呵五一不做比赛,就总结比赛了。做完了。。。其实就C题和I题比较有价值。。。。那就讲讲这两个题吧C: 给你N个数,N个区间,要求判断是否存在一个唯一的匹配。思路: 先随便求出一个匹配 , 然后判断这个匹配是否唯一。。。求出一个匹配的话,可以先把区间按右端点排序,维护一个set,表示当前还没有匹配的点,每次在点集中找最小的但是大于等于当前区间左端点原创 2013-04-30 16:46:18 · 2127 阅读 · 0 评论 -
Croc Champ 2013 - Finals (online version, Div. 1)
题目链接比赛时就搞了个C,赛后补了A BA : 给你一个环形的跑道,长度为了,有n个人站在跑道上,当跑步开始时,每个人会以相同的速度顺时针或者逆时针(等概率)行进,当两个人相撞后,他们会继续原来的方向前进。现在问你,t 时间后,相撞次数的期望是多少。如果两个人往同一个方向前进的话,肯定就无法碰到了,只要是相反方向就肯定会碰到(只要时间足够),可以看出,两个人碰到后,就开始一圈圈重复了,原创 2013-05-19 17:38:14 · 1158 阅读 · 0 评论 -
Codeforces Round #186 (Div. 2)
题目链接E题:大概能想到贪心,但细想不下去,最后问了别人,好像也没有什么严谨的证明。。。首先,尽可能凑出大的数字,m-1,m-2,,,,,,,话说是因为如果上下两个数字互为最优的匹配,那么必选这个匹配,因为如果不选这个会使得总答案变小然后每次就根据这个原则去选取就好了。。。看下那些AC的代码就知道了,这题主要是考想法,,,怎么证明。然后根据上面那个结论,可以用一个奇葩的用平衡树来做原创 2013-06-01 10:43:11 · 1363 阅读 · 0 评论 -
Codeforces Round #187 DIV 1
题目链接B题:事实证明是sb题,而且证明自己比题目还傻。。C题:设dp[i]表示当前以数字i结尾的所有合法子序列乘积的总和(非递减),那么新插进来一个数K的时候,我们要更新dp[K],dp[K] =( dp[0] + dp[1] + dp[2] +... + dp[K] ) * K - dp[K]; 所以要用到个东东动态统计前缀和比如1 2 3 3插入最后一个3的原创 2013-06-11 10:23:33 · 1139 阅读 · 0 评论 -
MemSQL start[c]up Round 1
妥妥的滚组了。。。A题:很久没做CF导致想了一个比较烦的方法,还sb的WA一次。。B题:可以发现答案是2^p * q的形式,q是奇数,然后就是暴力枚举p,求q,求q的时候需要二分一下,一开始WA了两次,最后还是fst了,原因是二分的上界取的不对,右边是2*n,那右边最大就是2*10^18,所以二分的上界取到10^9的时候就太小了。。。太伤了。。。。C:坑D:坑E:坑原创 2013-07-14 11:44:08 · 1328 阅读 · 0 评论 -
codeforces 123 div2
前两题做的还算快,可是最后却没有出题了,原因是题目都看不懂,特别是D题,真想骂几句,这神马意思啊最后由于做的比较快居然还涨rating了, ——!E题,并查集的带权合并 w[x]表示x到根的权值和在find的时候合并掉View Code #includeconst int maxn = 100010;const int mod = 1000000007;int原创 2013-08-19 18:58:04 · 892 阅读 · 0 评论 -
codeforces 127 div2
第一题我还写了一个dfs暴力--!实在是太水了,第三题一直错,赛后发现忘了特判x=3时的情况,第二题最后时刻一气呵成,无奈时间过了。。。。。啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!!!!!!!!!!!!!!!!!!结果自然名落孙山。但是有句话说的好失败是成功他妈原创 2013-08-19 18:58:27 · 748 阅读 · 0 评论 -
Codeforces Round #199 (Div. 2)
C: 可以避免用浮点D:推荐逐格递推法,想学的话去http://blog.csdn.net/crazy_ac/article/details/9819191E:Qtree 5的弱化版,顺便问一句。。。CF真是没题出了么??这个题由于是弱化版,没有向qtree 5那样对某个点的颜色取反,所以有一种简易的lct写法,我是跟小水大神学的。。学会了lct,我的splay写法也可以改观很多了原创 2013-09-10 18:28:00 · 1631 阅读 · 0 评论 -
Codeforces Round #198 (Div. 1)
E:给你n个数,每次可以拿出两个数,a b假设a然后问你这n个数能否变成只有两个数>0的序列。组合数学里面一开始就讲了一段话,先从小的case着手,然后归纳出问题的一般特性.这个题的话我们先考虑三个数的情况,如果三个数能够成功的将一个数变成0,那么n个数自然就可以了。事实上我们肯定可以将三个>0的数a b c转换成A B C,满足a既然一次转换能够将最小值变小,那么经过若干原创 2013-09-05 22:20:43 · 1215 阅读 · 0 评论 -
Codeforces Round #209 (Div. 2)
A:一次搞定不可能,如果有边界上的点可以两次搞定,没有的话每一次就只能搞定一个角落了,所以答案不是2就是3B: for(int i = 1; i n; i++) { if(k) printf("%d %d ",i*2,i*2-1),--k; else printf("%d %d ",i*2-1,i*2); }n+k - (n-原创 2013-11-03 03:00:51 · 1726 阅读 · 0 评论 -
Codeforces Round #219 (Div. 1)(完全)
戳我看题目A:给你n个数,要求尽可能多的找出匹配,如果两个数匹配,则ai*2 排序,从中间切断,分成相等的两半后,对于较大的那一半,从大到小遍历,对于每个数在左边那组找到最大的满足条件的数配对用一个变量移动一下就好了。这样的配对数量肯定就是最多的。因为1:如果左边那一半数量取少一点,比如取a1 a2 a3...ak (k 那实际上ak+1 ak+2 .. a n/2 这些数原创 2013-12-18 20:05:01 · 1399 阅读 · 0 评论 -
Codeforces Beta Round #2 练习
A题:模拟题,仔细点就好B题:DP给你一个数字矩阵,要求从左上角走到右下角的一条路径,这条路径上的数乘起来后末尾的0的个数最少末尾的0是由2、5产生的,于是联想一下是不是走2最少的一条路或者5最少的一条路就ok了呢?嗯,就是ok的.*_*假设从左上角走到右下角走过的数含因子2的最小的个数是x,5的最小的个数是y,则答案是min(x,y),即最优解x、y的个数中有一项是最少的原创 2013-08-19 18:57:30 · 637 阅读 · 0 评论 -
Codeforces Beta Round #1 练习
A 大水题B 模拟题,要很小心,注意细节处理 C 给你在一个正多边形上的三个点,判断这个多边形的最小面积。由于这个多边形最多只有100条边,可以直接枚举多边形的边数计算是否满足判断是否满足:三个点组成的三角形的每个角是圆周角的整数倍判断整数的时候精度不宜太大View Code #include#include#include#includ原创 2013-08-19 18:57:27 · 696 阅读 · 0 评论 -
codeforces 160D Edges in MST
给你一幅图,对于图中的每一条边,判断1、存在于任何一颗最小生成树中 any2、至少存在于某一颗最小生成树中 at least one3、不存在任何一棵最小生成树中 none看见就想一做的图论题思路:至少存在于某一颗最小生成树中 这种情况只可能存在于相同权值的边中,所以每次对于同一权值的边一起处理,再用 最小生成树中克鲁斯卡尔的方法来搞利用并查集:如果某时刻一条边的两个端点原创 2013-08-19 18:55:05 · 1421 阅读 · 0 评论 -
codeforces 练习 ---- CF 24
A 给你一个环,环上的每条边都有一个方向,按某个方向(顺时针或逆时针)走一遍,把与行走的方向相反的边反向,并加上相应的费用,判断走哪个方向的费用比较少直接dfs搞即可View Code #include#include#include#includeusing namespace std;int out[110];vectorint> edge[110原创 2013-08-19 18:57:21 · 810 阅读 · 0 评论 -
Codeforces Beta Round #3 练习
A:裸的广搜题,需要输出路径 B:贪心抓住题目的特殊性,每个物品只有1 2 两种体积先按性价比排序,贪心的优先选择性价比高的,某次选了之后体积超了,就剪掉这样子遍历一遍之后还不是答案因为可能会有1体积的空位,而可能通过去掉已选集合中某个1体积的物品,再用一个2体积的物品替代达到更优解所以这里要判断一下View Code #include#include#includ原创 2013-08-19 18:57:37 · 709 阅读 · 0 评论 -
CF 4 练习
ABC水题 D:n个二元组,求最长的一个序列组seq,序列的每一个元素的两个值都分别大于前一个元素记忆化搜索或者筛选后DP都可以两种方法View Code #include#include#includeset>#includestring>#include#include#include#includeusing names原创 2013-08-19 18:57:39 · 702 阅读 · 0 评论 -
codeforces 122
A : 暴力枚举B:找规律,也可以用数学方法找最小的x使得 a*x%b == 0 a,b已知(a=4*n b=n+1)x是所走的圈数,易得只要把x只要等于 b/gcd(a,b) 就满足了 然后答案就是a*x/b 即a/gcd(a,b)还要加上1,因为出发前就在1的位置走了一步了 所以答案 : a/gcd(a,b)+1;B题开始太草率了,被人黑了,于是又回来看原创 2013-08-19 18:57:55 · 736 阅读 · 0 评论 -
hdu 4359 codeforces 9D 组合 二叉树 DP
感觉hdu 4359 跟codeforces 9D就是差不多的题啊,比赛时没能回想起来以前是怎么做的,赛后赶紧补习codeforces 9D ,要求当前点左子树的所有点权都小于当前点的点权,当前点的点权小于右子树的所有点权,问你n个点深度>=h的树共有多少种不同的形状如样例3个点 深度大于等于2 如下图套用一下codeforces的题解Denote by原创 2012-08-10 15:45:59 · 1446 阅读 · 4 评论 -
codeforces 157 div1(完全)
我是div2选手!!!碰上了自己不擅长的数位DP,各种囧啊,前三题水的一逼,我还wa了一次,然后妥妥的掉分了A题:如果有零的话,去掉从左往右数的第一个0即可B题:这类题目以后要多多加强啊,这道题先预处理出cnt[i],表示有i个lucky dig的数有多少个,这个过程用到了数位类DP的基本方法处理出来后可以用一个dfs暴力求得答案戳这里看代码C题: 让你构造一个序列原创 2012-12-24 03:08:14 · 1990 阅读 · 3 评论 -
Codeforces Round #158 (Div. 2) (完全)
第一百零一篇博文了哟~比赛的时候直接看D和E了,结果都没做出来,我这个大水货。A题 : 水题,满足整除其实就是余数为0B提 : 模拟题C题 : 逆着恢复原来的数列就好了(不断的减一),直到碰到0就停止,当然不能模拟D题 : 给你一棵黑白树的每个点的颜色,以及这个点周围所有边的权值和,让你还原这棵树。将白点和黑点排成两排,按照权值从小到大,每次都从端点建边,边的权值为原创 2012-12-29 15:24:49 · 1571 阅读 · 0 评论 -
codeforces round 156 div1
div1 :A : 找最长的子序列,只包含两种数且每两个相邻的数都不相同,dp[i][j]代表以第i个数结尾上一个数是第j个数的最长的序列http://codeforces.com/contest/255/submission/2787851B: 问你一个点经过几次扩散式的染色才能够染不小于C个方格,很明显的二分答案判可行,不过在判断可行的时候还真是有点小纠结,想仔细了就okhtt原创 2012-12-19 01:51:21 · 1277 阅读 · 0 评论 -
codeforces 256 D Liars and Serge
戳这里看题目题意看了很久才懂,题解又搞了许久才懂,敲的时候连组合数C[i][j]都敲错了.......这或许就是被考试折磨的下场,下学期尽量在前半学期不要落下太多的功课吧。这道题关键是真真假假,假假真真 - -题意是说有n个人,有些人说真话,有些人说假话,每个人都知道所有人是说假话的还是说真话的,现在问他们每一个人:说真话的人有多少。每个人都会给出一个答案ai,说假话的人会随便原创 2013-01-04 17:49:53 · 1332 阅读 · 0 评论 -
codeforces 111C Petya and Spiders
http://codeforces.com/problemset/problem/111/C一个n*m的棋盘,初始状态下每个格子上都有一只蜘蛛,蜘蛛一步可以上下左右走,也可以停在原地,问,走一步,能使棋盘最多产生多少个空位考虑到n*m较小,所以有一维dp[i][j][k]表示前i行,第i行的状态为j,第i+1行的状态为k时所能产生的最多空位的数量(不包括第i+1行),由于不包括第i+1原创 2012-12-22 01:30:24 · 1683 阅读 · 0 评论 -
Codeforces Round #159 (Div. 2)
水!A: 题目看不懂,直接看sample看懂的B:直接输出就可以了 - -C:相当于给n条射线,极角排序,然后找角度最大的相邻的两条,360 减去这个角度就是答案D:最后一项减最后第二项肯定小于等于最后第二项,再用这个差值与最后第三项做差(大的减去小的),结果肯定也是小于等于最后第三项的,然后依次递推,相当于不断的加上括号,最后从左往右去括号即可证明:假设最后三项为 a a原创 2013-01-09 03:22:19 · 1430 阅读 · 2 评论 -
Codeforces Round #163 (Div. 2)(完全)
这场比赛大概是我做CF以来最难的一场div2了D题搞了很久,还是没搞出来,C题题目没看仔细,E题做过类似的,但显然我这种div2选手很少在比赛搞E题,不过现在已经渐渐消除了对后面两题的恐惧、C.Below the Diagonal给你一个0 1 方阵,题目说有n-1个1,然后一次操作可以交换两行或者两列,然后要求输出一种交换的方案使得所有的1都在主对角线以下。可以暴力两原创 2013-01-24 15:43:10 · 3151 阅读 · 2 评论 -
codeforces 217E 逆向思维
链接:http://codeforces.com/problemset/problem/217/E题意:给你一个字符串,长度小于等于300W,再给你两个数,n,k接下来是n个操作,每个操作是对一段区间操作,将整段区间取出来,偶数位的字符放前面,奇数位的字符放在后面,然后插入这个区间的后面比如 1 11 s1s2... s11, 将 s2s4s6s8s10s1s3s5s7s9s11原创 2012-09-19 23:12:10 · 1431 阅读 · 0 评论 -
codeforces 155 div2
发发水题题解~A题:暴力统计即可 http://codeforces.com/contest/254/submission/2735893B题:每个任务都可以变成一段区间,问题转换成给你若干个区间,每个区间都需要一定的工人,一个工人不能同时进行两项任务,最少需要多少工人范围比较小,我直接N平方暴力算了,用一个数组标记一下进行到当前任务的时候,某个结束的任务的工人是否已经被回收了h原创 2012-12-12 10:39:47 · 1177 阅读 · 0 评论 -
codeforces 148 div1
A : 假设已经有了i个数了,而且没有一段连续的区间异或值为0,那么我们考虑加入第i+1个数有几种方法,显然,第 i+1个数不能等于以i结尾的所有连续区间的异或值,这样的话第i+1 个数就有2^m-(i+1)中取值,注意,0不能选,所以依次相乘即可B: 将一个数列划分成两个数列,要求一个最大的f(i,j) - 最小的f(i,j)的最小值,f(i,j)是这样定义的:如果i j两个数在同一个数原创 2012-11-05 03:16:27 · 1392 阅读 · 4 评论 -
codeforces 126D Fibonacci Sums 递推 DP
http://www.codeforces.com/problemset/problem/126/D题意:求一个数有多少种 能表示成多少种 若干个非波那且数之和 的方案首先考虑到总的非波那且数的数量很少,所以先预处理出来,大概是88个,之后就超long long了而且我们可以用数学归纳法证明任何一个正整数都能 表示成若干个非波那且数之和那么我们就可以先找出这样一种方案:方案原创 2012-10-27 14:07:20 · 1360 阅读 · 0 评论 -
codeforces 208 E 时间戳 倍增法求LCA
链接:http://www.codeforces.com/problemset/problem/208/E题意:给你一个森林,m个询问:v,p求有多少个点(除v外) 与 v的第p个祖先相同这个题首先要解决找某个点的第p个祖先的问题,可以采用倍增法记录一个二维数组p[u][i]表示u的第2^i个祖先,那么通过这个数组我们就可以知道u的上面任意深度(相对于u)祖先是谁(巧妙的利用二进制原创 2012-07-28 13:47:13 · 3953 阅读 · 1 评论 -
codeforces 208C 图的拓扑排序+简单DP
链接http://www.codeforces.com/problemset/problem/208/C题意:给你一幅图,每条边边权为1,要求你在某个位置建一个警察局,使得从1到n的所有最短路中与这个警察局有接触的边的条数最多ps:假如一条路径经过警察局,那么肯定会经过两条与警察局有关的边(起点、终点除外)解法:先对图求点对间的最短路,处理出新图,在新图中,所有从s到t的路径都原创 2012-07-28 14:19:15 · 2205 阅读 · 0 评论 -
codeforces 212 C DP 递推 计数 破环
http://www.codeforces.com/problemset/problem/212/C不错的一个DP题,重在思维。(YY了大神的代码良久)题意:给你一串由A 和 B组成的字符串,首尾是相连的,组成一个环有个规则就是AB 会 变成BA,然后问你有多少个串可以一步变成给你的串比如 BAA答案是1,只有ABA一个串可以变成BAA讲一下解法吧,首先,环状的东东原创 2012-08-20 16:44:49 · 1445 阅读 · 0 评论 -
codeforces 215E 数位DP
链接:http://www.codeforces.com/problemset/problem/215/E题意:问你 l r之间有多少的数是周期数,周期数的定义为:这个数的二进制形式是以k为周期的,kl r 很大很大- -其实就是一般的按位统计的方法,在求长度小于len的二进制中有多少的二进制数是周期数时,可以枚举周期为1 2 3 。。。,当然这个周期都是独一无二的,比如当前枚举周期原创 2012-08-24 22:49:06 · 1414 阅读 · 0 评论 -
codeforces 137 div2
A题:20分钟才提交的,不懂题目什么情况,直接模拟n次好了,- -B题:记录行号和列号,交换两行的时候直接交换行号就好了C题:有一个很好的方法是用p[i]记录小于等于i的且能被i整除的最大的素数,然后约分的时候处理起来特别的方便D题:排个序,记录两个指针移动一下即可E题:矩阵乘法经典题,求一个点走到另一个点走k步有多少种走法,按照限制条件构造出初始矩阵,快速幂算一下即可原创 2012-09-11 12:49:43 · 969 阅读 · 0 评论