www.bersaty.com
摘要: int maze[m+1][n+1];//迷宫数组int sx[m*n+1]; //保存路径int sy[m*n+1];int dx[4]={0,0,1,-1}; //方向 int dx[4]={1,-1,0,0};void gomaze(int step,int x,int y) //x,y当前坐标,step要走第几步{ int i; sx[step]=x;sy[step]=y;//保存当前坐标 if(x==m&&y==n)//走到出口,打印路径 { for(i=1;i=1&&x=1)//如果可行,递归继续 gomze(step+1,nx,ny); }} 阅读全文
posted @ 2012-02-23 18:11 bersaty 阅读(287) 评论(0) 推荐(1) 编辑
摘要: 题目http://acm.hdu.edu.cn/showproblem.php?pid=1166度娘的 树状数组 http://baike.baidu.com/view/1420784.htm弄了一个下午,算是明白了点看了一些牛人的代码后的翻版。。#includeusing namespace std;int tr[500005],n;int lowbit(int a){return a&-a;}//找位置 int quy(int i) //计算前i项和 { int ans=0; for(;i>0;i-=lowbit(i)) ans+=tr[i]; retu... 阅读全文
posted @ 2012-02-06 21:30 bersaty 阅读(282) 评论(0) 推荐(0) 编辑
摘要: Catch That Cowhttp://poj.org/problem?id=3278RE了N次,终于过了,数组开小了= =。。顺便联系队列#includestruct point { int pos;}queue[200001];int head=0,tail=0;bool mat[200001]={0};int step[200001];bool is_empty(){ return head==tail; }point dequeue(){ return queue[head++];}void enqueue(point p){ queue[tail++]... 阅读全文
posted @ 2012-02-03 16:37 bersaty 阅读(201) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2544继续研究,dijkstra 和 bellmanford 算法#includeint main(){ int n,m,a,b,c; //freopen("in.txt","r",stdin); while(scanf("%d%d",&n,&m)!=EOF&&(n||m)) { int maze[101][101]={0}; while(m--) { scanf("%d%d%d",&a,& 阅读全文
posted @ 2012-02-01 17:33 bersaty 阅读(227) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1014题目看了好久,终于看完了,发现是群论里的,离散也差多忘了。。。说白了就是求生成元,求mod N的生成元,即生成元与N互质就OK了#include<iostream>int gcd(int a,int b){ if(!b) return a; return gcd(b,a%b);}int main(){ int s,m; while(scanf("%d%d",&s,&m)!=EOF) { if(gcd(s,m)==1) printf("%10d%1 阅读全文
posted @ 2012-02-01 10:46 bersaty 阅读(1396) 评论(0) 推荐(0) 编辑
摘要: 网上找的,慢慢研究下View Code 1 #include <cmath> 2 #include <complex> 3 #include <cstring> 4 using namespace std; 5 6 const double PI = acos(-1); 7 typedef complex<double> cp; 8 typedef long long int64; 9 10 const int N = 1 << 16; 11 int64 a[N], b[N], c[N << 1]; 12 13 void 阅读全文
posted @ 2011-12-08 19:39 bersaty 阅读(747) 评论(0) 推荐(0) 编辑
摘要: DieIng五一要去旅游,旅游区的景点道路分布如图:欣赏景点的道路为东西走向,每条道路有DieIng对它的喜爱值;南北走向为林间小道,供休息用。 由于五一游客较多,旅游区规定欣赏景点的道路只能单向行走,自东向西走;林间小道可双向行走。 DieIng要你帮他设计路线(可以从任意点开始,任意点结束),使得他能玩得最high。(喜爱值的总和最大) Input 第一行是两个整数N(0 using namespace std;long int s[1000000];int main(){ long int i,j,sum,max,m,n,a,k; while(scanf("%ld %ld&qu 阅读全文
posted @ 2011-12-05 19:15 bersaty 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 主要是处理多个集合的问题,图论等,像欧拉回路主要代码 像hdoj的1878,NYoj 的一笔画问题等都可以处理主要代码int find(int x) //查找根节点{ int r=x; while(r!=set[r]) r=set[r]; return r;}void union(int x,int y) //合并{ x=find(x); y=find(y); if(x>y) set[x]=y; else set[y]=x;} 阅读全文
posted @ 2011-12-05 19:07 bersaty 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?输入n,接着n行,nusing namespace std;int main(){ int n,a[210],t[210]={0},i,j; cin>>n; for(i=1;i>a[j]; for(j=i;j>=1;j--) t[j]=a[j]+(t[j-1]>t[j]? t[j-1]:t[j]); } j=0; for(i=1;i<n;i++) if(j<t[i]) ... 阅读全文
posted @ 2011-11-14 23:40 bersaty 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 编辑器加载中...#include using namespace std;#define N 7//物品数量#define S 20//要求背包重量int W[N+1]={0,1,4,3,4,5,2,7};//各物品重量,W[0]不使用。。。int knap(int s,int n)//s为剩余重量,n为剩余可先物品数。。{ if(s==0) return 1;//return 1 means success.. if(s0&&n<1)) return 0;//如果s<0或n<1则不能完成 if(knap(s-W[n],n-1... 阅读全文
posted @ 2011-10-28 18:33 bersaty 阅读(211) 评论(0) 推荐(0) 编辑