10 2012 档案

摘要:第一次区域赛,感觉是复杂的,各种感受都有啊。记录一下这不一样的几天把。 周五早上,开始了从淄博->金华的长途旅途,第一次出去这么远,体验了一把坐火车的辛苦,我们3个都是不怎么做火车的。。。先是做动车到了济南,然后和中国石油的学姐见了面,悲剧的是去金华的火车晚点4个小时,大家都只得在火车站苦坐了4个小时,心里安慰自己这是在涨人品啊。。。更搞笑的是在候车厅发现山大的竟然在我们后面(scf听见他们讨论kmp,qc看到了算法导论),貌似是坐着打了4个小时的三国杀,不过和他们没啥交流。。。在下午我们终于上了车,开始20+小时的火车,和中国石油的在一起比较有趣,开始在济南的火车站不是很熟,都有点拘谨 阅读全文
posted @ 2012-10-31 12:23 Naix_x 阅读(185) 评论(0) 推荐(0)
摘要:题目链接这个题,说不清出算那种题。题目还是挺不错的。题意:两个字符串的公共因子,因子的定义是如abab因子有 ab,abab两个。开始的时候很明显就可以发现,要对长度分解因子,然后判断是否分别是字符串的因子,然后这两个因子是否相同。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <map> 6 #include <algorithm> 7 using namespace std; 阅读全文
posted @ 2012-10-25 11:50 Naix_x 阅读(204) 评论(0) 推荐(0)
摘要:这个题,不简单啊,虽说是模拟,但是需要注意的情况有很多。开始看错了题,理解正确题意之后,依旧写了很久,错了N次后,终于到了最后一组数据,终于给水过去了,最后一种情况我是分两种情况讨论的,也不知写的对不对。。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: packrec 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cstdlib> 10 #include <map> 11 #include 阅读全文
posted @ 2012-10-24 21:26 Naix_x 阅读(214) 评论(0) 推荐(0)
摘要:1Y,没写DFS,直接5个for。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: crypt1 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cstdlib>10 #include <map>11 #include <algorithm>12 using namespace std;13 int p[11],o[11];14 int judge(int x)15 {16 whil 阅读全文
posted @ 2012-10-24 16:26 Naix_x 阅读(147) 评论(0) 推荐(0)
摘要:枚举+标记即可。/* ID: cuizhe LANG: C++ TASK: calfflac*/#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <map>#include <algorithm>using namespace std;char str[30001],p[30001];int o[30001];int main(){ int i,j,len,num,ans,t1,t2,st,end; char c 阅读全文
posted @ 2012-10-24 13:37 Naix_x 阅读(132) 评论(0) 推荐(0)
摘要:这是贪心专题吗,这个题用DP搞的(实在是没看出怎么贪心),数据里,不是按顺序给出的,而且有m>c的情况,我被坑啦。。。DP状态转移还是很好想的。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: barn1 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cstdlib>10 #include <map>11 #include <algorithm>12 using namespa 阅读全文
posted @ 2012-10-23 19:41 Naix_x 阅读(154) 评论(0) 推荐(0)
摘要:1.3开始了,贪心专题。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: milk 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cstdlib>10 #include <map>11 #include <algorithm>12 using namespace std;13 struct node14 {15 int price;16 int vol;17 }p[10001];18 阅读全文
posted @ 2012-10-23 18:38 Naix_x 阅读(173) 评论(0) 推荐(0)
摘要:题目链接如果在现场赛,基本做不出。。。这个题目感觉还是很有质量的,本来就知道这个题是DP,所以看题的时候就主动往状态转移上靠,然后看完之后觉得这个题很水啊。。。前i个的和为j,然后通过每一位上的因子递推就行了,然后就SB的敲了一个代码,WA了,想了一下,额,这种想法是错的。。。这样不能保证LCM = m,怎么才能保证LCM呢。。。想啊想,搞了一个更2的方法,状态还是刚那个样子,然后用组合的方式去枚举两个数,保证LCM = m,然后拍了一会,发现也不对,有重复的啊,难道要容斥。。。然后终于想到可以再加一维,带着当前状态的LCM转移,前i个和为j,当前的lcm为k,这样就可以了。。。4个for的复 阅读全文
posted @ 2012-10-23 09:28 Naix_x 阅读(300) 评论(0) 推荐(0)
摘要:跟上一个题基本差不多,题目是不是有歧义啊。。。这个题的意思是2-10进制中至少在两个进制上是回文的,理解错了题意挂了一次。。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: dualpal 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cstdlib>10 #include <map>11 using namespace std;12 int judge(int x,int n)13 {14 阅读全文
posted @ 2012-10-22 19:36 Naix_x 阅读(115) 评论(0) 推荐(0)
摘要:水题,做完回家。难得1Y。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: palsquare 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cstdlib>10 #include <map>11 using namespace std;12 int n;13 int judge(int x)14 {15 int p[30],i,num;16 num = 1;17 while(x > 0) 阅读全文
posted @ 2012-10-22 09:22 Naix_x 阅读(133) 评论(0) 推荐(0)
摘要:这个题真是无聊,今天做完CF,就在整这个题。。。开始理解错了题意了,发现给了一个文件的字典,文件的读入读出,早忘的差不多了,读出只能把一个字典,读成一个字符串,写了好长时间,改了N处,终于过了。。。做CF被虐爆,做这个更是被虐爆了。。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: namenum 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cstdlib>10 #include <map> 阅读全文
posted @ 2012-10-21 22:04 Naix_x 阅读(188) 评论(0) 推荐(0)
摘要:题目链接题目还是比较水的,好久没有很短的时间就看出状态转移了。。。然后就是注意一下,机器越多,生产的价值不一定高。。。写了一个不靠谱的程序又是只有一组没过。。。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 int p[101][101],dp[101][101]; 6 int main() 7 { 8 int n,m,i,j,k,ans; 9 scanf("%d%d",&n,&m);10 fo 阅读全文
posted @ 2012-10-19 11:34 Naix_x 阅读(221) 评论(0) 推荐(0)
摘要:题目链接裸模版题,学习匈牙利算法。看了很多,大体理解了算法过程了。至于思想,以后慢慢体会。解释一下样例的过程把,从1号女找到1号男,linker记录下女生编号。然后再找二号女,发现和一号男有关系,去再搜一号男的linker1号女是否可以换一个男的,OK,找到了,1号女和2号男连起来。再找三号女,和一号男有关系,同样,去再搜2号,是否可以换个男生,OK,2号女找到了3号男,结束。 1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 int p[501][501],used[501],linke 阅读全文
posted @ 2012-10-18 19:55 Naix_x 阅读(177) 评论(0) 推荐(0)
摘要:题目链接题意就是给出N个6个数,其中是否有两组相同。不知正解是怎么做的,我是按和排序,然后判相邻是否相同,2000+乱搞一下给水过了。PS:貌似这个题目是让判两个雪花同构啊,我也不太清楚,就不深入研究了。。。数据水啊,难道我也看错题了。。。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <algorithm> 5 using namespace std; 6 struct node 7 { 8 int num[7]; 9 int sum;10 } p[ 阅读全文
posted @ 2012-10-18 15:56 Naix_x 阅读(168) 评论(0) 推荐(0)
摘要:题目链接以前做过置换群的题目,基本上都是一个样,这个题,数据不大,乱搞即可,注意换行,贡献一次PE。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 using namespace std; 5 int p[501],o[501],z; 6 void dfs(int i) 7 { 8 if(!o[i]) 9 {10 o[i] = 1;11 z ++;12 dfs(p[i]);13 o[i] = z;14 }15 else16... 阅读全文
posted @ 2012-10-18 15:24 Naix_x 阅读(167) 评论(0) 推荐(0)
摘要:题目链接这个状态转移想了会时间,dp[i][j]记录前i分钟学了j分钟的取得的最大的分数,得到方程dp[i][j] = dp[i-k][j-k] + sum[i] - sum[i-k](l<=k<=j) ,这个果断并不是只是一个普通的DP,交上各种TLE,然后发现问题了,应该需要需要优化。这个状态方程神似以前单调队列优化DP的转移方程,只不过改成对角线了,而且只需维护队列的队头即可。对这部分还是不太自信啊,试着写了写,反正感觉写的不太好,WA了多次,乱改了几次后过了。。。不容易啊。 1 #include <iostream> 2 #include <cstdio& 阅读全文
posted @ 2012-10-17 18:57 Naix_x 阅读(211) 评论(0) 推荐(0)
摘要:题目链接数据范围小,暴力乱搞即可。。。LCA是什么,以后研究把。。。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 int fa[10001],o[10001]; 7 int main() 8 { 9 int t,i,n,sv,ev;10 scanf("%d",&t);11 while(t--)12 {13 memset(fa,0,sizeof( 阅读全文
posted @ 2012-10-16 20:08 Naix_x 阅读(170) 评论(0) 推荐(0)
摘要:题目链接转化真的是太神了,看了一下题解的提示,唉,真的是一个考验思维的题目。题目大意:n个人一起走,可以分成很多组,每个人说一句话,前面有几个人,后面有有几个人,最多有多少个人说真话。网赛的时候真心一点想法都没有啊,不知从何下手。。。看了一下题解的提示,这个问题只要转化一下,就是自己可以解决的问题了。每个人说的话,转化为一个区间,只需求最大不重叠区间的数目就可以了,这样就是以前做过的,排序后的线性的DP问题。敲的出来WA1次了,好在想了想有没有漏的情况,检查了出来,注意一下区间相同的时候的情况搞了个标记数组乱搞一下,2Y。 1 #include <iostream> 2 #incl 阅读全文
posted @ 2012-10-16 11:43 Naix_x 阅读(267) 评论(0) 推荐(0)
摘要:题目链接弱爆啦,组合弱爆了,反正是没想出来怎么搞这个题,其实这个公式不难推啊,反正就是没推出来。今天队内赛,实在是没办法了,暴力写了个DFS,先把10以内的打出表来,发现类似杨辉三角的一个表,推不出公式,只能找规律了。也推公式,也找规律,中间还走会了神,发现borad上过的人N多了,有些着急,这样应该不难吧。。。又推了会,还是没想出来,找规律吧,估摸着应该是和上两项有关系,自己写了小程序测试一下几个数据和scf讨论了下,貌似真的是找出规律了。。。然后时间不多了,好在代码很短,马上快结束了,乱写了,最后在各种乱搞+思考之下,和暴力的写的数据对上了,中间错了2次,好在在4:53的时候终于AC了。。 阅读全文
posted @ 2012-10-14 20:19 Naix_x 阅读(293) 评论(0) 推荐(0)
摘要:题目链接很不错的一个题,开始搞了一个裸树的,后来听宝哥说用DFS把一个节点给离散成一段区间,重新标号,想了一下,好久没敲树状数组了,敲完发现还是TLE,比较发现我用左儿子,右兄弟的建树好像效率很低啊,改成链表形式的邻接表存图,终于过了。 1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 int p[200001],str[200001],end[200001],n,num; 5 struct node//挂链的邻接表 6 { 7 int data; 8 struct node *next; 阅读全文
posted @ 2012-10-13 17:03 Naix_x 阅读(273) 评论(0) 推荐(0)
摘要:题目链接水题,不解释。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <map> 6 #include <queue> 7 #define ll __int64 8 using namespace std; 9 ll gcd(ll a,ll b)10 {11 return b == 0?a:gcd(b,a%b);12 }13 int main()14 {15 int t;16 ll 阅读全文
posted @ 2012-10-12 09:48 Naix_x 阅读(211) 评论(0) 推荐(0)
摘要:题目链接matrix67大神出的题,做出来好激动啊。。。和前几天做的那个用鸽巢定理差不多,只不过是加上一个组合而已。开始把50000的组合数都给预处理出来了,果断TLE了,改了改处理到n,然后0ms秒过了。。。 1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 #define MOD 1234567 5 int c[500001][3],p[500001],sum[500001],o[100001]; 6 int main() 7 { 8 int i,j,n,m,ans; 9 scanf( 阅读全文
posted @ 2012-10-11 10:46 Naix_x 阅读(302) 评论(0) 推荐(0)
摘要:题目链接经典的状态压缩题目。这个题目就是在石子特别少100个,河却特别长10^9的情况下,而且跳的特别近只有1-10,有点像是省赛那个背包体积特别大的题,这种思想很重要,这个题目的代码写的很渣,思路是如果两个石子距离特别大,就可以近似的看成100,因为无论跳的能力是多少,距离很大,有很多种组合,跳不到石头上。压缩完,就按普通DP来搞就行了,注意特殊情况,特判。 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <cmath> 5 #include 阅读全文
posted @ 2012-10-10 17:23 Naix_x 阅读(254) 评论(0) 推荐(0)
摘要:这篇文章中讲到这个问题,这篇文章基本上把容斥原理解决的问题大体上都概括了,神文啊。http://www.cppblog.com/vici/archive/2011/09/05/155103.html题意:给出n,和一些数字,求1-n-1之间多少个数能被这些数整除的。思路,去看上面这篇文章吧,注意预处理把数据这些数中0和整除的数给筛出来,取交集的时候求的是lcm,就没问题了。 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <cmath> 5 #d 阅读全文
posted @ 2012-10-08 10:33 Naix_x 阅读(203) 评论(0) 推荐(0)
摘要:原文链接:http://hi.baidu.com/cydorniaknight/item/e304f00e7bd9f096a2df438ePS:各位ACMer保重身体啊。——————————————————————————分割线————————————————————————————————————————前些日子惊闻dsh的噩耗,是在网友的BLOG上看到的。当时我就笑了,怎么可能呢,愚人节还没过完么。不过仔细想想貌似有个把月没联系了, CALL之,但电话那头已经关机了。这时我就笑不出来了。后来从他同学那里得到消息,确实是几个月前查出肝癌晚期,几天前走了。还是不敢相信,精力如此旺盛的人,居然说 阅读全文
posted @ 2012-10-07 11:09 Naix_x 阅读(202) 评论(0) 推荐(0)
摘要:题目链接题意:找和m互质的第k个数。容斥原理可以快速求出某个范围内,和m不互斥的个数,显然可以求出某个范围内互质的个数,所以只要取一个很大的end,二分即可,写二分的时候开始按普通的写的,发现不对,要找第一个出现的数才是结果,取end和容斥的模版敲错一点,查数据查出了错,4Y。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 using namespace std; 5 #define ll __int64 6 int prim[1001]; 7 ll judge(ll x,int 阅读全文
posted @ 2012-10-06 17:20 Naix_x 阅读(205) 评论(0) 推荐(0)
摘要:题目链接第一次做的时候竟然递归了,而且没有记忆化,这不是犯2吗。。。记忆化依旧TLE了之后,上递推,水过了。 1 #include <stdio.h> 2 #include <string.h> 3 #define N -10000000 4 int dp[21][21][21]; 5 int main() 6 { 7 int a,b,c,i,j,k; 8 for(i = 0;i <= 20;i ++) 9 {10 for(j = 0;j <= 20;j ++)11 {12 dp[0][i][j] = 1;13 ... 阅读全文
posted @ 2012-10-05 14:30 Naix_x 阅读(211) 评论(0) 推荐(0)
摘要:题目链接知道了用这种方法做,想了会,没整出来,翻翻书,看到一个类似的。组合数学17页有个类似的例题,证明一定有解。大体过程,用sum[i],表示前i个的和对n取余,共有n个元素,这n个数里,如果存在0,很明显这是答案,如果不存在,则至少有两个数相同,sum[j]-sum[k] = 0,则这一段的和就是所求解的答案。难得1Y啊。。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <map> 5 using namespace std; 6 int sum[ 阅读全文
posted @ 2012-10-05 11:20 Naix_x 阅读(194) 评论(0) 推荐(0)
摘要:题目链接以前暑假一次练习赛的题目,当时如此的水题,很茫然啊,现在大体明白求期望都是倒着推的以后,这个题就很简单了。这个题直接算就可以,每一个状态都只能是从上一个状态推出来的,利用组合计算出概率,取倒数就是期望,因为精度WA了一次,好久没有1Y过了。。。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <map> 5 using namespace std; 6 #define eps 1e-9 7 #define ll __int64 8 int mai 阅读全文
posted @ 2012-10-05 10:30 Naix_x 阅读(180) 评论(0) 推荐(0)
摘要:题目链接算是裸裸的模版题了,求a - b上 和 n互质的数,可是做的很费劲啊,有个地方没用__int64,让我DEBUG了好久。。。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <map> 5 using namespace std; 6 #define ll __int64 7 #define N 35000 8 int o[N],prim[10000],num; 9 ll judge(ll x, ll n)10 {11 int i,j,len;1 阅读全文
posted @ 2012-10-04 13:43 Naix_x 阅读(160) 评论(0) 推荐(0)
摘要:题目链接题意:最小生成树是否唯一。数据比较水,用最朴实的方法过的,O(n^2+e)再学一学,这个朴实方法改了N处,,思路简单,Kruskal写的,就是删除生成树里的每一条边,求最小生成树,唉,这是写的啥啊。。。。 1 #include <cstdio> 2 #include <cstring> 3 #include <map> 4 #include <cmath> 5 #include <algorithm> 6 using namespace std; 7 int o[101],num,sum,m,n; 8 struct edge 阅读全文
posted @ 2012-10-03 15:35 Naix_x 阅读(203) 评论(0) 推荐(0)
摘要:题目链接不理解,不明白啊,不互质的时候,思路是两个方程合并成一个,再合并,最后求出结果。。。这个博客讲的不错。 1 #include <cstdio> 2 #include <cstring> 3 #include <map> 4 #include <cmath> 5 using namespace std; 6 #define ll __int64 7 ll p[11],o[11]; 8 ll x,y; 9 ll ext_eulid(ll a,ll b)10 {11 ll t,d;12 if(b == 0)13 {14 x = 1;15 ... 阅读全文
posted @ 2012-10-02 20:40 Naix_x 阅读(310) 评论(0) 推荐(0)
摘要:这次CF做的真是太生疏了,好久没做比赛了,果断CF被虐惨了。。。A题裸贪心,因为对C++的sort还不大熟,敲了12分钟,然后更悲剧的是结构体里面的一个符号写错了,让我怀疑算法正确性了。。。这场注定要悲剧了,20分钟才过了第一个题,然后B题,求判断是否是含有3个因子,前些天刚思考一个问题,那就是完全平方数的因子一定是奇数个,所以很快就发现就是素数的完全平方啊,自己又SB了,第一次,筛选素数敲错,第二次,盲查数据,发现1错了。。。要不是这样又要被查爆了,磕磕绊绊来到了C,题意还是挺好理解(注意特殊情况),然后觉得可做,感觉像是二分,一开始算法就想错了,我把第一行定住,然后再去找,肯定错了。。.. 阅读全文
posted @ 2012-10-02 13:41 Naix_x 阅读(182) 评论(0) 推荐(0)
摘要:题目链接虽然不是很理解,看着模版和讲解对这个题改编了一下,就过了。顺便整理一下中国剩余定理当作模版,在网上居然搜到海大wangs的博客了,第一眼居然没看出来,orz大神。。。以下这段话从他博客上复制的。至于原理百度百科吧。。。设m1,m2,...,mk是两两互素的正整数,对于任意的正整数a1,a2,a3,..,ak 同余方程组: x≡a1 (mod m1) x≡a2 (mod m2) ... x≡ak (mod mk) 必有解, 且解可写为 x≡M1N1a1+MkNkak+....MkNkak (mod m) 其中 m=m1m2m3....mk Mi=m/mi,(1<=i<=k) 阅读全文
posted @ 2012-10-01 20:40 Naix_x 阅读(225) 评论(2) 推荐(0)
摘要:题目链接水过的,就是普普通通的枚举上一层和这一层,应该可以加上队列优化,降复杂度。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #define eps 1e-9 6 #define INF -10000000 7 #define ll __int64 8 using namespace std; 9 int dp[21][18000],p[21][21],o[18000];10 int main()11 {12 int n, 阅读全文
posted @ 2012-10-01 18:03 Naix_x 阅读(180) 评论(0) 推荐(0)