11 2012 档案
摘要:题目链接WA+RE了20次。。。错了近20次发现 算法错了,需要注意优先队列,可是,没写过优先队列的BFS。。。虎哥提示用spfa来搞,然后重新了一个spfa的bfs,一次过了。。。注意特殊数据,DISCUSS有很多需要注意的。。。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <iostream> 5 #include <queue> 6 using namespace std; 7 int mp1[501][501],mp2[501][
阅读全文
摘要:题目链接纠结中,DFS统计写错了,到最后也没对拍出数据cha了,看了一下别人的写法,过了。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <queue> 5 #include <iostream> 6 using namespace std; 7 char p[51][51]; 8 int o[51][51],n,m,sr,sc,er,ec,num,z; 9 int a[4] = {-1,0,1,0}; 10 int b[4] = {0,1
阅读全文
摘要:题目链接SPFA果真是功能强大,1Y。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <queue> 5 #include <iostream> 6 using namespace std; 7 #define N 10000000 8 double p1[101][101],p2[101][101],d[101],v; 9 int n;10 int spfa(int str)11 {12 int in[101],u,i;13 memset
阅读全文
摘要:题目链接搞笑的题目。。。DFS过的。。。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <iostream> 5 using namespace std; 6 #define N 10000000 7 int map[101][101],o[101],n,m,val[101],z[101]; 8 int dfs(int x,int a,int b) 9 {10 int i,ans = val[x],t;11 if(b - a > n) retur
阅读全文
摘要:题目链接这个题就是找到1 到 2之间的路径上所有经过路的最大值中的最小值。。。有点绕,反正就是最短路的变形。。。没太想清楚怎么写,写了spfa和floyd都错了,没想清楚怎么变形啊。。。一个地方想错了。。。改了都过了。。 1 #include <cstdio>//spfa算法 2 #include <cstring> 3 #include <cmath> 4 #include <queue> 5 using namespace std; 6 #define INF 0x3f3f3f3f 7 #define eps 1e-7 8 double dp
阅读全文
摘要:做的我好郁闷啊。。。卡到死了,想了一个暴力方法,枚举骑士和国王相遇的点,再枚举所有的骑士相遇的点。这样复杂度基本上上亿了,然后卡了几天,看了看题解,枚举国王和骑士的相遇的时候只需要枚举国王周围的几个点就行了。。。然后原来写的代码,各种BUG啊。。。各种调试,各种提交,各种错误n,m看错各种变量写错,实在是无语,最后终于检查不出错误了,提交还是挂了。。。找AC代码 换函数。。。最后还是没检查出那里错了,换了跟AC代码的写法,终于过了。。。这题真心不想做第二遍了。。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: camelot 5 ...
阅读全文
摘要:题目链接注意优先级问题,样例看清楚,过了样例应该就能看出优先级不一样了。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 using namespace std; 5 char str[13] = "KQRBNP"; 6 int main() 7 { 8 char p[101][101]; 9 int i,j,k,z;10 for(i = 0;i <= 16;i ++)11 {12 gets(p[i]);13 }14 printf("White:
阅读全文
摘要:题目链接只要理解了题意之后,就不是很难了。学长们,把题意讲的很明白了。:和.交替出现,坐标系是按平常数学上的坐标系建法。居然1Y了,意外。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 using namespace std; 5 char p[101][101]; 6 void judge(char *s1,char *s2) 7 { 8 int i,len1,len2; 9 len1 = strlen(s1);10 len2 = strlen(s2);11 for(i = 0;
阅读全文
摘要:和POJ上一个题一模一样,把输入顺序变了,改一点就行。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: shopping 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <queue>10 #include <map>11 using namespace std;12 int p[6],o[6],kk[1001];13 int cl[3001][6],vl[3001];14 int q[6][6][6][
阅读全文
摘要:以前知道白书上的代码,一直不理解,本来以为对欧拉回路定理已经很熟了,就是不明白为什么错,终于对白书上的代码有认识了,就是必须把输出语句给存起来。。不能在函数dfs里输出啊。。。错了N次啊。。为什么要把输出压到栈里,讲解在http://www.nocow.cn/index.php/USACO/fence有提到,貌似是可能存在环的情况,至今不是很明白。和虎哥讨论了一下,直接把在dfs里直接输出的程序给cha掉了。orz一下。。。7 1 2 2 3 3 4 4 1 3 5 5 6 6 3这个数据就是1 2 3 4是一个环,3 5 6也是一个环,到3这个结点时候按字典序查的时候会先搜4,这样就出...
阅读全文
摘要:和杭州赛区那个求最短路中的最长路很类似,悲剧的是模版一个地方给敲错了,很细小的错误,我检查了N遍,中间写了floyd,测试一下题意。。WA的都麻木了,这模版敲的很不熟啊。。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: butter 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <queue> 10 using namespace std; 11 #define INF 0x3f3f3f3f 12 int...
阅读全文
摘要:题目链接熟悉这两个模版。这两个思路差不多,实现方式有所不同,好像dinic应该快一点,但是在POJ上都是16ms....dinic算法 1 #include //dinic算法 2 #include 3 #include 4 #include 5 using namespace std; 6 #define INF 0x7fffffff 7 queue que; 8 int flow[201][201],dis[201]; 9 int n,m;10 int bfs()11 {12 int t,i;13 memset(dis,-1,sizeof(dis));14 w...
阅读全文
摘要:复杂,这种BFS,就是模拟的节奏啊,写了好久。用8进制记录每一个状态,然后顺序一定要想清楚,然后变换的时候注意一下。很多细节问题,导致我调试了很久。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: msquare 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <string> 9 #include <cmath> 10 #include <queue> 11 #include <map> 12 using namespace s
阅读全文
摘要:枚举,写的代码搓。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: ratios 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <string> 9 #include <math.h>10 #include <queue>11 using namespace std;12 #define N 10000000013 int p[5][5];14 int main()15 {16 int i,j,k,a,b,c,d,ans;17 freope
阅读全文
摘要:弱爆了,真心看不懂这个题是在搞毛线啊。。。本来以为是神马数论的神题,不能直接枚举把,然后搜了一下题解,然后都说是水题模拟就行。。。顿时受打击了,直接抄题解过了。。。掉人品啊,有点太无语了。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: spin 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <string> 9 #include <math.h>10 #include <queue>11 using namespace std;12 in
阅读全文
摘要:题目链接第一道最大流,赤裸裸的模版题,刚好可以熟悉模版用。今天看了一下最大流,就看了一个EK算法,感觉有点和二分图匹配算法有点相似,对于最大流问题有点了解了,不过为什么这么做,也不是 很懂,只是把代码给敲了一遍,以后慢慢学习。EK算法,过程是先BFS找到str到end的一条路,然后每条路上的流量(key[][]记录)取这些路中流量的最小值(flow[]记录),在这条路上的流量都减去这个值,然后建立反向边,然后继续找增广路,直到找不到为止。有前驱的结点不会再找了,所以几遍之后肯定找不到了。 1 #include <cstdio> 2 #include <cstring>
阅读全文
摘要:这个题差不多算是记录路径的DP,题目很短,然后本来以为很水的。最近水过习惯了,竟然敲了个暴力,各种TLE,然后换了种方式水,还是水不过去,后台的k很大,所以O(k)的算法是不可能过的。这就开始纠结了,开始的时候有想过是不是DP问题,状态转移很容易发现,不过这个题目是求第k大的,然后尝试用DP写了写,挂在一个大数据了,不好检查,自己出了几个数据,检查出了BUG,如果确定了第i位为1之后,再更新的时候sum[i]数组,在最后一次改了int之后,终于过了!!! 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: kimbits 5 */ 6 #include...
阅读全文
摘要:水过啊。。直接模拟O(n^2)的算法,有O(n*logn)的算法,研究。浙大关于求N!最后非0位的阶乘模版。2012.11.22#include <cstdio>#include <cstring>#include <string>#include <cmath>#include <queue>using namespace std;int lastdigit(char* buf){ const int mod[20] = {1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2}; int len = str
阅读全文
摘要:和前边的一个题目求前缀那个很像,加上一个标记数组就行。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: contact 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <iostream> 9 #include <queue>10 #include <map>11 using namespace std;12 #define N 20000113 int dp[2000001],p[500];14 bool o[2000001];15 int
阅读全文
摘要:先是搞了一下map的用法。。。C++学的太搓了。。这个题除了map之外,真心没想到啥好方法啊。。。乱搞一下,各种小错误,终于过了。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: contact 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <iostream> 9 #include <queue> 10 #include <map> 11 using namespace std; 12 #define N 200001 13 map&l
阅读全文
摘要:这次 感觉挺没状态的,做了俩题,居然还涨rating了,又变蓝了。。。争取稳步上升。。。记一下流水账。在宿舍里做CF,也不知道是环境的问题,还是怎么着,心静不下来。第一题爆水的题,看了近半个小时刚看懂题意。。。当时我就慌乱了,有种想要睡觉的冲动,好在,心静了下来,当时宿舍确实挺乱的,还好,之后就没啥影响了。第二个题题意简单,然后第一想法就是枚举,然后就是漫长的实现代码时间了,本来想直接枚举每一位的。。。想了想有简单的写法,然后就中间sb了两次,位数有点判断不清了,写了个暴力发现小数据都对了,搞了个特判,终于过了这个题。第三个题还有40-50分钟的样子,题意也挺简单,关于or运算的,当时看了一下
阅读全文
摘要:题目链接其实这是我第一次敲邻接表+spfa,暑假的时候做过很多spfa题目,我一个没切,从头学起啊。。。切这个题,纯为熟悉模版。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <queue> 5 #include <map> 6 using namespace std; 7 #define N 100000000 8 int d[1001],in[1001],first[2001],t; 9 map <string,int>
阅读全文
摘要:大体看懂题意后,第一反应就是和以前见过的离散化+线段树的一个题目的二维情况。不过感觉数据规模不大,暴力就行,对离散化有点信心不足啊,确实不怎么会离散。。。好在这个题目a,b都是在10000以内,搞一个数组哈希了一下。主体部分就是离散之后,暴力模拟整个过程,时间复杂度目测应该是2000*2000*1000,想水一下。。。代码搞了好久,然后提交发现内存爆了。。。时间倒是可以过,试着提交了几次1500*1500的数组可以过,但是按我离散的方式一定要开2000*2000的数组,悲剧啊,最后一组数组一直过不了,本地程序运行结果是对的。。。唉,查了一下题解,发现只要变一下顺序,不仅可以提高查找效率,也不用
阅读全文
摘要:以前做过类似的。卡了精度一次,2Y。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: humble 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cmath>10 #include <algorithm>11 using namespace std;12 #define N 100000000013 long long prim[100011];14 int num[101],o[101];15
阅读全文
摘要:好搞没搞背包问题了。这个问题太模版了。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: inflate 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cmath>10 #include <algorithm>11 using namespace std;12 #define N 10000000013 int c[10001],v[10001],p[10001];14 int main()15
阅读全文
摘要:虽然好久没敲过了prim,迅速秒掉。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: agrinet 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cmath>10 #include <algorithm>11 using namespace std;12 #define N 10000000013 int p[101][101],low[101],o[101];14 int main()15
阅读全文
摘要:郁闷,没看见76个字符换行啊。。。。一直错。。。。然后看着数据,添各种坑,终于让这搓代码过了。。。磕磕绊绊终于结束第二章了!!!上图。总体上来说,是乱搞题目,模拟之类居多,比我想像的刷的快啊。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: fracdec 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cmath>10 #include <algorithm>11 using namespace
阅读全文
摘要:水题,没注意无向边,2Y。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: comehome 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cmath>10 #include <algorithm>11 using namespace std;12 #define N 10000000013 int p[101][101];14 int judge(char ch)15 {16 if(ch &g
阅读全文
摘要:这个题意真心看不懂,看了一下翻译,看了好一会汉语的,终于理解了。给一个图,可能有几个联通的集合,问加上一条边,使得两个集合联通变为一个集合,使得这个集合的点的之间的最短路中的最大的那一条最短。开始YY一下是否贪心,好像不是,感觉用到了求次小生成树的思想之类的。YY了一个算法,搞了一数组d[i],来记录i所在集合,距离i最远的距离,然后枚举加的边是(i,j)。复杂度应该没什么问题,然后提交,挂了,有点怀疑算法的正确性了,不过还好,想到还要和原来的最短路里边的最长路进行判断,又写了个DFS,AC了。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: c...
阅读全文
摘要:简单的BFS,可是看错题了,从原来的基础上改的,改的很乱,边界什么的。错了好几次。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: maze1 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cmath> 10 #include <algorithm> 11 using namespace std; 12 char p[501][501]; 13 int o[501][501]; 14 int q
阅读全文
摘要:这个和金华的小模拟很相似,题目中啥也没说,想枚举100000秒,试一下水的。结果就水过了,1Y。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: ttwo 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cmath>10 #include <algorithm>11 using namespace std;12 int x[4] = {-1,0,1,0};13 int y[4] = {0,1,0,
阅读全文
摘要:题目链接题意真纠结啊。神马盈余,负债的。。。差不多看懂样例了,是反正一年12个月可能赚钱,可能赔钱。。。题意:1-5月, 2-6月....8-12月,做8次统计,在统计内的5个月,整体上都是赔钱的。求这一年可能盈利多少。第一想法枚举,2^12次方,然后TLE,换了乱搞办法,和暴力的对拍,讨论5个月,盈利最多的情况下,依旧赔钱,乱搞一下就行。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorit
阅读全文
摘要:好高端DFS,一开始土土的DFS了一下,挂了,想了想,应该是一个公司合并子公司的时候,对某些公司的股份>50了,但是在前面就没办法更新了,然后搞了一下让他从头遍历。然后一直又多加了。。。不知如何乱搞,根本想不清楚,递归起来怎么变化的。本来标记数组在函数内部的,开了个全局的终于乱搞对了。。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: concom 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cmath
阅读全文
摘要:以前见过这类问题,都是用母函数给水过去的,这个应该也能用母函数水过(猜测)。母函数复杂度高,记得见过一种更高效的DP方式,非常神奇只是改变了一下dp的顺序就把重复给去掉了。一种一直递推到v种,这样更新是无重复的,这样递推是假设最后一个是c[i],以前的状态中都没有含有c[i]的情况。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: money 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cmath>10
阅读全文
摘要:这个很简单。。中间细节处理,没想清楚,乱改了一下,终于1Y了。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: zerosum 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cmath>10 #include <algorithm>11 using namespace std;12 int o[21],n;13 int judge()14 {15 int i;16 int sum = 0,tem
阅读全文
摘要:不好刷了,这个题想了会,中间还想过卡特兰数列。。。不过好在按照第一感觉就应该是DP,想出了三维的状态转移。。。又MLE,也是不知道给出的提示是神马意思。。。改了滚动数组,过了。效率也不是很高,差点挂掉。dp[i][j][k] 代表第i层,总数为j,最后一层为k个的二叉树种类,然后在这k个上继续搞i+1层。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: nocows 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <
阅读全文
摘要:这个题目纠结的输入啊,根本不知道如何读入啊。借鉴一下别人的读入,然后写了个DFS,一直挂在最后一组数据上了。。。记忆化了一下还是挂了,看别人读入的时候,看过别人的思路,然后换思路+优化后,终于过了。。。用字典树应该会更快,用map水过了。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: prefix 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cmath>10 #include <algorithm
阅读全文
摘要:操作次数很多,灯泡也比较多,但是灯泡其实只有4个集合,4种操作,操作2次等于没有改变,所以枚举就行了,最后输出字典序搓了,写了个冒泡。。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: lamps 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm> 10 using namespace std; 11 int aim[201],o[201],n,p[1001][201]; 12 int judg
阅读全文
摘要:效率好低,先DFS预处理所有的数,100万个左右,然后二分找到比n大的,然后枚举判断。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: runround 5 */ 6 #include <iostream> 7 #include <cstdio> 8 #include <cstring> 9 #include <cstdlib>10 #include <map>11 #include <algorithm>12 #include <ctime>13 using namespace s
阅读全文
摘要:纠结了几次INT64和longlong,CE了几次。。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: subset 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm>10 using namespace std;11 long long dp[50][1001];12 int main()13 {14 int i,j,n,sum;15 freopen("subset.in"
阅读全文
摘要:罗马数字问题。记得以前做过很类似的,那个数据范围小,100以内,我把前100个数全写出来存数组了。。。这个3500,乱搞就行。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: preface 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm>10 using namespace std;11 int p[3600][10];12 char str[10] = "IVXLCDM"
阅读全文
摘要:各种位运算,题意好纠结啊,在翻译帮助下,居然1Y了。。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: hamming 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm>10 using namespace std;11 int que[100];12 int main()13 {14 int n,b,d,i,j,k,top,t,num;15 freopen("hamming.in&q
阅读全文
摘要:题目链接又是一个变量敲错,错了10次,这是搞毛线啊。。。对spfa不熟,一直以为模版敲错了。。。终于,在大家的帮助下找到那个sb错误,从下午一直搞到晚上。。。这个题还是很经典的,有向图里,找每一个点到x的最小环。先正向建图再反向建图,两遍spfa。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <queue> 5 using namespace std; 6 #define N 2000000 7 int p1[1011][1011],p2[1011]
阅读全文
摘要:本来以为是一个好高深的DP的,看了看数据范围,枚举啊。。。n和m分不清了,错了好几次,以后用题目里面的变量,养成好习惯。。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: holstein 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm>10 using namespace std;11 int o[21],c[30],p[20][40],t[30],an[21];12 int main()1
阅读全文
摘要:很不错的一个题。开始自己想了一个策略,然后写了150+代码。。。WA后,发现策略可能有问题,貌似有更简单的办法,自己想的策略是错的,敲的各种if else,想清楚再写啊。。。这个题目应该算是贪心把。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: sort3 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm>10 using namespace std;11 int p[1011],o[4];12
阅读全文
摘要:水题,尼玛,数组开大不给MLE,来了个看不懂的错误,不就多申请点内存了嘛。。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: frac1 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm>10 using namespace std;11 struct node12 {13 int a,b;14 double x;15 } p[160*160+1];16 int cmp(const node &
阅读全文
摘要:刚POJ水到100了,哎呀,爆水的题目,没太看懂的题意,实在是快点想秒了这个水题,看了看DISCUSS,就给水过了,掉人品啊。。。 区域赛完了真是感觉没啥事干了,这几天想了好多,想想比赛的过程,想想以后,想了很多。不过好像总体上感觉是玩的时间比较多。。。课还是在混日子,听也听不懂,自己正在自学C++,这个要好好搞一下。最近真的是无聊了,只是刷usaco解闷,在宿舍玩dota,想想大二上快过了一半了,匆匆的就快过年了。学acm真的是一年了,现在依旧啥也不会的状态,几何数论图论基本上在文盲的状态,组合dp搜索基本上是似懂非懂,当然也应该有自信,付出努力必定会有收获。 以后做题计划就是POJ...
阅读全文
摘要:感觉代码大体写的还行,就是BUG太多了。。。特别注意输出的优先级,然后了 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: castle 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 using namespace std;10 int p[60][61],o[60][60][5],key[61][61],num,n,m;11 int f[3501];12 int a[4] = {0,-1,0,1};13 int b[4] = {-1,0,1,0
阅读全文
摘要:题目链接第一眼看到这个题问题的时候觉得是水DP啊,状态转移很容易看出来dp[i][j] = sum(dp[i-1][j-k]) (0<=k<=p),dp[i][j]前i个人,已经分了j个糖果的方案。大约O(n^3)的复杂度,我就交了,果断TLE,然后想了想把枚举k给优化掉,O(n^2)复杂度,目测应该没有问题了把。。。结果还是TLE了,无语,一看数据10000组。。。这个题目正解应该是容斥原理,有一篇论文中有提到。论文里有讲解,不过好像太精简了。。。看了好一会,才能理解。先考虑n个糖果分给m个人,相当于n个糖果中间插入m-1块板,所以就是在m+n-1个位置中选m-1个位置,方案数为
阅读全文
摘要:皇后问题。。。打了一下13的表,水过。USACO第一单元终于给刷完了。上图。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: checker 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm>10 using namespace std;11 int r[31],c[31],lr[31],lc[31],n,num;12 void dfs(int x,int y,int step)13 {14 in
阅读全文
摘要:手贱,一个地方敲错,浪费时间了。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: sprime 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm>10 using namespace std;11 #define N 100000112 long long p[300001];13 int o[N],prim[100001],num,len,n;14 int judge(int x)15 {16
阅读全文
摘要:本来想筛选素数的。。。交了之后发现复杂度也太高了。。。可耻的看了一下hint,然后就各种for枚举了每一位了。.。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: pprime 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm> 10 using namespace std; 11 #define N 1000001 12 bool p[N]; 13 int prim[100000],num; 1
阅读全文
摘要:经典的数字三角形 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: numtri 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm>10 using namespace std;11 #define LL long long12 int dp[1001][1001];13 int main()14 {15 int i,j,n;16 freopen("numtri.in",&quo
阅读全文
摘要:以前做过类似的,写的很复杂,搞了一晚上。。2Y。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: milk3 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm> 10 using namespace std; 11 #define LL long long 12 int p[31][31][31]; 13 int qua[1000],qub[1000],quc[1000]; 14 int o[10
阅读全文
摘要:好纠结的。。。复杂度很高,开始的方法太暴力了,后来搞了一个 快了一点的枚举办法,水过了。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: ariprog 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 #include <algorithm>10 #include <ctime>11 using namespace std;12 #define LL long long13 int p[1250001],o[125000
阅读全文
摘要:过程是曲折的,代码是恶心的。无视把。。。和翻棋子游戏差不多,每种方式至多翻3次,然后在数据帮助下,终于A了。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: clocks 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <cmath> 9 using namespace std; 10 #define LL long long 11 LL ans; 12 int p[10][10],que[100],o[11]; 13 int judge() 14 { 15 int
阅读全文
摘要:题目链接以前想了好久的一个问题,没想到热身赛又出了,果断悲剧啊。。。看了一下题解,应该反着推啊。。。不联通的图可以分为两个部分k个结点联通,剩下n-k结点随便排列就好,这个图一定是不连通的。然后沿着这个思路做就可以写出递推式,这个题目需要高精度,java也太不熟了,语法都不不会。。 1 import java.io.*; 2 import java.math.*; 3 import java.util.*; 4 import java.text.*; 5 public class Main 6 { 7 public static void main(String[] args) 8 ...
阅读全文