上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 34 下一页
摘要: 唉,总算是过了,很无语呀,本来想改改,看效率能否提高一点,可是改来改去还是快不了多少,反而因为一些小错误多了几次WA这题用字典树还有并查集做,至于判断欧拉路之前已经说过了,只需要判断连通 && 所以节点的度为偶数 或者只有俩个节点的度为奇数‘用并查集主要是判断是否连通用字典树是为了给读入的字符串编号(这一步也就是跟之前pku 1386 唯一的区别吧)本题特别要注意的是一点就是,有空数据,唉…………#include<iostream>#include<string>#define MAXN 500100using namespace std;int f[M 阅读全文
posted @ 2011-08-06 12:27 枕边梦 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 额,还是大数问题,不难,就是,居然来一个这么变态的测试数据1000000000输出 0#include<iostream>#include<math.h>#include<string.h>using namespace std;int main(){ char str[101]; int sum[110],j,k,cas,num; num=0; cin>>cas; while(cas--) { if(num++) cout<<endl; memset(sum,0,sizeof(sum)); while(cin>>str) 阅读全文
posted @ 2011-08-05 20:07 枕边梦 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 额,同一个代码,贴了三道题 ,都不用改的,卡特兰数的应用,还有hdu1130,hdu1134出栈次序问题,其实就是卡特兰数的应用卡特兰公式:令h(1)=1,h(0)=1,catalan数满足递归式: h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2) 另类递归式: h(n)=((4*n-2)/(n+1))*h(n-1); 该递推关系的解为: h(n)=C(2n,n)/(n+1) (n=1,2,3,...)用递归式来做,接下来就是一个大数问题了,(4*n-2)/(n+1) 不能直接算,未必整除呀ORZ先算(4*n-2)*h(n 阅读全文
posted @ 2011-08-05 19:25 枕边梦 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 判断是否存在欧拉回路存在欧拉回路的条件:无向图1) 连通2) 所有节点的度为偶数不知道用并查集做是不是本来就比较慢,反正慢了好多#include<iostream>using namespace std;int r[1000],f[1000];int find(int x){ if(x==f[x]) return x; f[x]=find(f[x]);};void Union(int x,int y){ int a=find(x); int b=find(y); if(a!=b) f[b]=a; return;}void init(int n){ for(int i=0;i< 阅读全文
posted @ 2011-08-05 14:04 枕边梦 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 刚开始看到这题都吓到了,第一感觉就是不能记录已走过的点,一旦记录了,那假设钥匙在对面,门在这边,那拿完钥匙就回不来了;可是,如果不记录的话,那岂不是在整个地图了乱窜,绝对超时,甚至是死循环;之后,想了想,把每个点在入队列的时候,记录下状态每一个点的状态,即又有没有拿到钥匙,拿到哪几种钥匙之类的,如果回溯时,俩点的状态一样,则没必要入队,这确实是一种可行的办法,可是想到这里,突然,想到,要对每一个点保存16种状态,那内存肯定要爆了呀,结果思路就这么停了,想不出别的办法了……查了一下,原来记录状态是用位运算保存呀,郁闷呐,亏我知道这东西存在,亏我还用过位运算保存过一个数字是否出现过,结果我居然一点 阅读全文
posted @ 2011-08-05 11:37 枕边梦 阅读(1091) 评论(0) 推荐(0) 编辑
摘要: 所谓的灌水问题,坑爹啊,为什么这题是在搜索的课件里,我郁闷了好久以下是资料的链接,还有我自己的代码http://blog.csdn.net/lipengyuan_fan/article/details/4369709倒水问题的经典形式是这样的: “假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。” 当然题外是有一些合理的限制的,比如从池塘里灌水的时候,不管壶里是不是已经有水了,壶一定要灌满,不能和另一个壶里的水位比照一下“毛估估”(我们可以假设壶是不透明的,而且形状也不同);同样的,如果要把水从壶里倒进池塘里,一定要都倒光; 阅读全文
posted @ 2011-08-04 17:10 枕边梦 阅读(452) 评论(1) 推荐(0) 编辑
摘要: 郁闷呐,课件说是搜索题,结果搜了半天还是超时,看来剪枝的能力还是不行呀最后,悲剧的用简单的DP过的这题目用DP 的思想还是比较简单的#include<iostream>using namespace std;int n,height[100],max1;struct node{ int x,y,z,area; node(int _x=0,int _y=0,int _z=0):x(_x),y(_y),z(_z) { area=x*y; };}a[100];int cmp(const void* a1,const void *a2){ return (*(node*)a2).area- 阅读全文
posted @ 2011-08-04 14:37 枕边梦 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 额,还是BFS,只不过分层进行而已,注意时空机部分的就好了真的好熟了呀,可是每次总有一些小错误要改好久郁闷呐#include<iostream>#include<queue>using namespace std;char map[2][10][10];int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}},n,m,T;bool vis[2][10][10],flag;struct node { int x,y,z,cnt; node(int _z=0,int _x=0,int _y=0,int _cnt=0):z(_z),x(_x),y(_ 阅读全文
posted @ 2011-08-04 00:49 枕边梦 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 额,自己的代码比较水,用普通的方法做的,内存开得太大了View Code #include"stdio.h"#define maxn 11000000__int64 q[maxn];int n;void bfs(){ int i,j; __int64 x; q[0]=1; i=0;j=1; while(i<j) { x=q[i]; if(x%n==0) { printf("%I64d\n",x); break; } x*=10; q[j++]=x; q[j++]=x+1; i++; }}int main(){ while(scanf("% 阅读全文
posted @ 2011-08-03 21:03 枕边梦 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 这题还真是诡异,明明思路很清晰,BFS也很熟练 的敲出来了,可就是改了半天,原来问题在这里,“Harry从来不在楼梯上停留”,这里提示的很明显了,他除了不再楼梯上停留,其他地方是可以停留的,当然,也就只有在遇到楼梯,又暂时过不去时,才有必要在原地停留,郁闷呀,疏忽了这里,wa了好几次……hdu1180 代码#include <iostream>#include <queue>using namespace std;struct Node{ int x, y, time; Node(int _x=0,int _y=0,int _time=0):x(_x),y(_y),ti 阅读全文
posted @ 2011-08-03 11:57 枕边梦 阅读(310) 评论(0) 推荐(0) 编辑
上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 34 下一页