随笔分类 -  USACO

摘要:longest prefix/*ID: hubiao cavePROG: prefixLANG: C++*/#include#include#includeusing namespace std;string sary[202],s;bool g[200050];int len[202],slen,ans;int main(){ ifstream fin("prefix.in"); ofstream fout("prefix.out"); string str; int co=0; int i=0; while(fin>>str,str!=& 阅读全文
posted @ 2013-09-08 19:30 cavehubiao 阅读(185) 评论(0) 推荐(0)
摘要:又是来回2次等于没按,一个结构体 no3odd,speodd,no3even,speeven代表非-1%3 奇数偶数,普通奇数偶数。然后当按1-4次时,归纳出1次对应4种情况,2次对应0次和2种各一次(1+6),3次对应(1,3)(4+4),4次对应(0,2,4)(1+6+4)超过4以后的偶数情况等同于4,偶数等同于3随后根据C取值枚举便可/*ID: hubiao cavePROG: lampsLANG: C++*/#include#include#include#includeusing namespace std;struct Bu{ bool no3even; bool s... 阅读全文
posted @ 2013-09-06 23:03 cavehubiao 阅读(212) 评论(0) 推荐(0)
摘要:题目看懂了到是不难,直接枚举,不过调错真是调了好久,提交了12次才过啊啊啊啊啊 1 /* 2 3 ID: hubiao cave 4 5 PROG: runround 6 7 LANG: C++ 8 9 */ 10 11 12 13 14 #include 15 16 #include 17 #include 18 #include 19 #include 20 21 using namespace std; 22 23 24 25 26 int main() 27 28 { 29 30 31 32 33 ifstream fi... 阅读全文
posted @ 2013-08-30 18:00 cavehubiao 阅读(203) 评论(0) 推荐(0)
摘要:见识到dp的强大了,可是我自己总找不到状态方程,写个dfs慢的要死,到24就算出结果都要10秒+...贴个别人代码先过了...dp再学习中转自http://blog.csdn.net/zrw93/article/details/8520896动态规划。大概思想是从1开始,1、2、3....不断加入新的数字,记录能组成的两个集合的差值。假如我们约定两个集合的差值是大于等于0的,以避免两个集合交换一下产生的重复。那么一开始我们只有一个1,集合差值只能是1。接下来我们加入了2,当加入1集合的时候,集合差是3,加入空集的时候集合差是1(2-1)。现在我们手里的集合差是3和1。再下面我们加入3,对于集合 阅读全文
posted @ 2013-08-28 19:59 cavehubiao 阅读(180) 评论(0) 推荐(0)
摘要:题目总是看不懂,后来跑nocow上看翻译,虽然了解意思了,却被这几个规则搞的不知道从何下手,想着数字到底怎么变成这些字母,后来一看nocow题解第一个...直接把个十百千位枚举然后组合到一起便可...突然感觉自己智商有点捉鸡→_→ 1 /* 2 3 ID: hubiao cave 4 5 PROG: preface 6 7 LANG: C++ 8 9 */ 10 11 12 13 14 #include 15 16 #include 17 18 #include 19 20 using namespace std; 21 22 23 string ... 阅读全文
posted @ 2013-08-26 23:40 cavehubiao 阅读(186) 评论(0) 推荐(0)
摘要:感觉USCAO的题目真是有点难懂,题目比较简单,直接从最小开始枚举就过了/*ID: hubiao cavePROG: hammingLANG: C++*/#include#include#include#includeusing namespace std;int N,B,D;int ary[66];int count1=0;bool canfit(int);int main(){ ifstream fin("hamming.in"); ofstream fout("hamming.out"); fin>>N>>B>> 阅读全文
posted @ 2013-08-25 13:47 cavehubiao 阅读(185) 评论(0) 推荐(0)
摘要:dfs+枚举,最近发现dfs+保存中间过程+dfs前后回复变量 ,简直是太好用了,主要剪枝是:对于已用feeds种类==已知最小种类 先判断 然后直接在dfs里return,剪掉了>与已知种类的dfs结果还是蛮高兴的Executing... Test 1: TEST OK [0.000 secs, 3500 KB] Test 2: TEST OK [0.011 secs, 3500 KB] Test 3: TEST OK [0.000 secs, 3500 KB] Test 4: TEST OK [0.000 secs, 3500 KB] Test 5: TEST OK ... 阅读全文
posted @ 2013-08-24 22:34 cavehubiao 阅读(173) 评论(0) 推荐(0)
摘要:大概思路:fin读取时记录1,2,3对应个数,然后从buf[1]开始,枚举遍历。1,2,3最终位置和是由count[1..2..3]形成的3个区间,若buf[i]再对应区间,则continue;若不再,则遍历最终位置所在的区间,寻找是否存在两数交换恰好后都在最终位置的index,若有,交换,若无,随意选择一处交换,每次交换step++;又是一次ac,,^_^o~ 努力! 1 /* 2 3 ID: hubiao cave 4 5 PROG: sort3 6 7 LANG: C++ 8 9 */ 10 11 12 13 14 #include 15 16 #i... 阅读全文
posted @ 2013-08-23 17:00 cavehubiao 阅读(204) 评论(0) 推荐(0)
摘要:第一次直接生成所有+insertsort case11超时,后来想了下把分子分母能同时除2,3,5,7全部去掉,勉强过了 1 /* 2 3 ID: hubiao cave 4 5 PROG: frac1 6 7 LANG: C++ 8 9 */ 10 11 12 13 14 #include 15 16 #include 17 18 #include 19 20 using namespace std; 21 22 23 int ary[2][160*160]; 24 void insert(float a,float b,int count); 2... 阅读全文
posted @ 2013-08-22 13:50 cavehubiao 阅读(160) 评论(0) 推荐(0)
摘要:看到题目介绍我就虚了,看到问题我更虚了,结果写了堆又臭又长的代码,提交了几次,改了几个错误,想着最后肯定超时,没想到竟然过了... 1 /* 2 ID: hubiao cave 3 PROG: castle 4 LANG: C++ 5 */ 6 7 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 using namespace std; 15 16 #define EDGE 9999 17 18 struct ROOM 19 { 20 int w... 阅读全文
posted @ 2013-08-20 20:56 cavehubiao 阅读(238) 评论(0) 推荐(0)
摘要:思路还是比较清晰,自己写的dfs最后一个超时,还得跑到nocow看题解,大牛门不愧是大牛,我用几十行判断能否placequeue,大牛们一句话就完了...看来还是多看看别人的思路,不想改了,感觉该就得重写,贴个自己的代码在贴个大牛的,用大牛的过了先.../*ID: hubiao cavePROG: checkerLANG: C++*/#include#include#include#include#includeusing namespace std;struct broad{ int column[15];};list li;int count;int*xie;int cb[15][... 阅读全文
posted @ 2013-08-16 22:13 cavehubiao 阅读(180) 评论(0) 推荐(0)
摘要:第一次直接过,题目虽然简单,但是还是很高兴。最高位只能是{2,3,5,7},其他位只能是{1,3,7,9}/*ID: hubiao cavePROG: sprimeLANG: C++*/#include#include#include#includeusing namespace std;const int ar[4]={2,3,5,7};bool IsPrime(int );int count;void dfs(int n,int m);listli;int main(){ ifstream fin("sprime.in"); ofstream fout("sp 阅读全文
posted @ 2013-08-16 12:01 cavehubiao 阅读(163) 评论(0) 推荐(0)
摘要:开始想着dfs,果断还是超时,看网上是最简单的dp...压力山大/*ID: hubiao cavePROG: numtriLANG: C++*/#include#include#includeusing namespace std;int tr[1002][1002];int dp[1002][1002];int gRow;int dfs(int row,int column);int main(){ ifstream fin("numtri.in"); ofstream fout("numtri.out"); int row; fin>>r 阅读全文
posted @ 2013-08-15 21:44 cavehubiao 阅读(168) 评论(0) 推荐(0)
摘要:求回文素数,开始直接枚举判断果断tle,后来网上找优化,发现除了11,偶数长度的回文数都可以被11整出,应为上限是100,000,000,所以只需要在长度为 1,3,5,7里寻找(11除外),看到大牛门直接先用循环生成长度为奇数的回文数再判断素数,我偷鸡了下,直接在a=#include#includeusing namespace std;bool IsPrime(int);bool IsPa(int);char buf[10];bool getLength(int n);int main(){ ifstream fin("pprime.in"); ofstream fou 阅读全文
posted @ 2013-08-15 21:41 cavehubiao 阅读(172) 评论(0) 推荐(0)
摘要:写的少啊,用的办法各种麻烦,想着用dfs+判断重复退出,a,b,c 其实只用记录2个的状态足以判断是否已经dfs,我开始打算用个struct{int a,int b,int c}来记录...后来网上看nowco的报告,直接一个visited[a][b]保存a,b即可若已经dfs,怎visited[a][b]=1,连遍历都省了.../*ID: hubiao cavePROG: milk3LANG: C++*/#include#include#includeusing namespace std;struct temp{ int a; int b;};bool operator ==... 阅读全文
posted @ 2013-08-15 14:43 cavehubiao 阅读(290) 评论(0) 推荐(0)
摘要:感觉蛮简单,就是枚举,以为能一次过,结果到case7直接tle了,自己修改了下,也去网上看了下解题报告,尝试剪枝,最后到把set si,si.count()换成用一个数组判断存在才过,看来set虽然方便,可还得少用.../*ID: hubiao cavePROG: ariprogLANG: C++*/#include#include#include#includeusing namespace std;set si;//set ssi;struct info{ int a; int b;};setsin;bool operator >number>>upper; limit. 阅读全文
posted @ 2013-08-14 16:34 cavehubiao 阅读(161) 评论(0) 推荐(0)
摘要:深深的感受到自己的算法有多菜了,这种题型以前还在poj上做过,每种move超过3次后相当于mode 4,所以每种move只可能0-3 4种情况,用遍历就是4^9种情况。开始想的挺好,应为要求组合数最小,又move和次序无关。想着number从1-9然后是11-19 22-29 33-39。。。最后到111222333444...999,这种顺序递增遍历肯定比直接dfs快。可是想了半天也组织不好 number递增写法...最后还是用dfs做了,dfs开始也有点头大,无从下手,听说还有bfs做的,待好好研究下。/*ID: hubiao cavePROG: clocksLANG: C++*/#in. 阅读全文
posted @ 2013-08-11 23:57 cavehubiao 阅读(178) 评论(0) 推荐(0)
摘要:开始完全没有思路,不知如何贪心下手,后来看到这篇博主的结题报告,研究了会才搞懂http://www.cnblogs.com/kissfinger/archive/2011/03/08/1977720.html然后自己仿照着写,到situation5(就是第6幅图,4,5图一种情况)时还是出错了,后来想想我少考虑了一种情况自己的是max2(a.width+b.width,c.width+d.width),应该是max3(a.width+b.width,c.width+d.width,b.width+d.width) 1 /* 2 3 ID: hubiao cave 4 5 PROG... 阅读全文
posted @ 2013-08-10 14:03 cavehubiao 阅读(208) 评论(0) 推荐(0)