摘要: 见识到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 阅读(176) 评论(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 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 开是查临时变量的相关资料class A{public: A() { cout<<"default construction"<<endl; } A(const A&) { cout<<"copy construction"<<endl; } A& operator =(const A& a) { cout<<"operator ="<<endl; } ~A() { cout<<"destruction"< 阅读全文
posted @ 2013-08-26 00:35 cavehubiao 阅读(282) 评论(0) 推荐(1) 编辑
摘要: 感觉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 阅读(180) 评论(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 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 今天看《c++标准库》第7节 iterotor,只有randomacess iterator支持+=n ,-=n,+n,-n,it-it2(当然没有it+it2),支持的容器有string vector deque,及一般指针与array,其中string和vector比较特别,因为 vector::iterator it,it++时,返回的临时变量根据vector实现形式可能是指针也可能是class(其他容器基本是class,不存在这种情况),而c++基本类型包括指针作为临时变量时都不允许更改其值,class 和struct可以,所以(it++)++这种形式可能在编译时出错。在vs2012里 阅读全文
posted @ 2013-08-23 22:35 cavehubiao 阅读(190) 评论(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 阅读(198) 评论(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 阅读(156) 评论(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 阅读(235) 评论(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 阅读(176) 评论(0) 推荐(0) 编辑