上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 17 下一页
摘要: 直接搜肯定过不去,后来看到题解别人按他的思路搜索无剪枝也能过,试了下结果还是不行,不过思路倒是不错,每个点若2x2满足要看3x3只用看额外加入的一行一列。官方题解好像是dp,状态方程 dp[i][j]=min(dp[i+1][j],dp[i][j+1],dp[i+1][j+1])+1;G[i+1][j] , G[i][j+1] , G[i+1][j+1]分别为(i,j)向下、向右、向右下一格的状况。 在(n-1,n-1)当且仅当三者都为1的时候,正方形才能扩充。从最右下向上,依次扩充即可按照这个思路写了个 1 /* 2 3 ID: hubiao cave 4 5 PROG: ra... 阅读全文
posted @ 2013-10-16 16:56 cavehubiao 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 转自:http://m.blog.csdn.net/blog/dawn_cx/8943273对于十分稀疏的数组,按照数组下标值存入和读取数组元素。当读取数组元素时,如何不需要初始化就能判断该值是存入的还是脏数据,就需要用到下面的方法,用空间换时间。如果不用这个方法,必须对数组初始化,然后判断读取的值跟初始化值的区别,来确定该值是否是存入值。但当数据十分稀疏时,初始化过程会浪费大量的时间。一个自然的想法就是能不能用一个数组记录下已经初始化的位置,这就是to【N】数组的作用。按照初始化顺序,保存初始化的位置,用top指针来标记有效数据。但仅有to数组还不能达到读取时的随机性,如果没有from数组, 阅读全文
posted @ 2013-10-15 22:11 cavehubiao 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 随机生成n个数,范围<m,要保证概率平均,不能重复,这是从珠玑编程上看到的例题题解如下 1 int c=n; 2 int rem=m; 3 for(int i=0;i<m;i++) 4 { 5 if(rand()%rem<c) 6 { 7 cout<<i<<" " ; 8 c-- 9 }10 rem--;11 } 阅读全文
posted @ 2013-10-15 18:03 cavehubiao 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 好烦的一题,思路不是很难,bfs,数据结构要定义好,写起来各种问题,看nocow题解,照某个敲,到case20就是不过。我擦,后来我直接把他代码复制过去都过不了。找了个别人的先过了... 1 /* 2 3 ID: hubiao cave 4 5 PROG: camelot 6 7 LANG: C++ 8 9 */10 11 #include 12 #include 13 #include14 15 using namespace std;16 17 struct data{18 int x,y,d;19 }q[10000];20 21 bool use[40][40... 阅读全文
posted @ 2013-10-15 00:06 cavehubiao 阅读(290) 评论(0) 推荐(0) 编辑
摘要: cSimpleModule有个方法交simTime(),返回调用此方法的时间然后还有个类叫SimTime(),...然后你懂的,我错把simTime()写成了SimTime()。搞毛啊 调了一晚上 阅读全文
posted @ 2013-10-13 22:38 cavehubiao 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 这题能做对我都不信,开始想了好久感觉确实类似完全背包,dp表不好定义,完全背包一维数组就完了,这里最多要买5种商品于是去看了眼题解,就看到dp两字和一个5维数组....我去,真有5维数组这种东西...不过一想确实可以啊,虽然麻烦点。不过一样是完全背包的思想。dp[5][5][5][5][5],有点区别是完全背包原题是求最大价值,状态方程是dp[n]=max(dp[n],dp[n-weight(m)]+value(m));且初始dp[1]到dp[n]为0这里要求最小,就要反过来一下初始时dp[a][b][c][d][e] (a-e分别代表对应位置的商品的个数)要=a*price(1)+b*pri 阅读全文
posted @ 2013-10-12 22:46 cavehubiao 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 记得看了那个两个教学视频一下午,照着把代码写完了,看着跑出来的效果,还是很激动,毕竟以前完全没接触过。然后便是对视频的里的代码深信无疑,虽然自己还没搞清楚基本的运行流程。 后来基于视频里的代码修改,发现怎么也达到不了我想要的效果,搞了2天,来回试了好多方法。最后请教别人,说是先看看官方samples,挑了个最简单的tictoc看了看,突然感觉豁然开朗,虽然tictoc16个例子代码很少,但是感觉看完后思路清晰,反过来看看视频里的代码,发现好多地方实现有些问题,结果导致我想实现的效果无法实现。唉,蛋疼. 阅读全文
posted @ 2013-10-12 13:38 cavehubiao 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 额,我是直接dfs的思路,但是到case 5过不去了,感觉是太慢了。然后网上看题解,题目原型就是欧拉路径,欧拉路径存在的条件是 要么点的度都是偶数,要么只有两个点的度是奇数。如果是两个点的度是奇数,起点和终点一定是这两个点,然后我就加了一个判断,如果是有奇数度的点,取较小的点作为起点dfs。dfs写的很丑,没组织好,还根据初始点判断,其实组织好没有这么麻烦...但是到7还是过不去,继续看题解,发现有个大牛dfs同时加了个floodfill其实我一直以为floodfill就是dfs和bfs...然后我仿照加了个勉强过了 1 /* 2 3 ID: hubiao cave 4 5 PR... 阅读全文
posted @ 2013-10-11 12:29 cavehubiao 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 用n次djikstra 求最小和的思路,关键是如何优化,开始直接用数组存,case8 就过不去了,后来把extract-min换成priority_queue 到case9还是没过去。先贴个我的 ,在贴个大牛的/*ID: hubiao cavePROG: butterLANG: C++*/#include#include#include#includeusing namespace std;#define INFINITE 888888int N,P,C;int djistra(int origial);int visit[801];int counter[801];int pastures[ 阅读全文
posted @ 2013-10-09 23:16 cavehubiao 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 防鄙视系列二分求幂int pow2(int a,int b){ int base=a,int r=1; while(b!=0) { if(b%2) r*=base; base*=base; b/=2; } return r;}二分改位运算,一样的意思,位操作快点int pow3(int a,int b){ int base=a,int r=1; while(b!=0) { if(b&1) r*=base; base*=base; b>>=1; }} 阅读全文
posted @ 2013-10-09 18:38 cavehubiao 阅读(126) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 17 下一页