Chiryen

导航

2013年8月16日 #

POJ(3468)

摘要: A Simple Problem with Integershttp://poj.org/problem?id=3468#include struct node{ int l,r; __int64 sum; __int64 add;}tree[100000*3];void build(int left,int right,int root){ int mid=(left+right)/2; if(left==right) { tree[root].l=left; tree[root].r=right; tree[ro... 阅读全文

posted @ 2013-08-16 12:57 Chiryen 阅读(148) 评论(0) 推荐(0) 编辑

2013年8月12日 #

HDOJ(1010)DFS+剪枝

摘要: Tempter of the Bonehttp://acm.hdu.edu.cn/showproblem.php?pid=1010#include #include char map[10][10];int dx[]={1,0,-1,0};int dy[]={0,1,0,-1};bool flag;int n,m,xd,yd,t;void DFS(int x,int y,int t){ if(t==0) //到时间了符合条件flag=true再退出,不符合条件直接退出。 { if(x==xd&&y==yd) flag=true; ... 阅读全文

posted @ 2013-08-12 16:33 Chiryen 阅读(186) 评论(0) 推荐(0) 编辑

2013年8月11日 #

HDOJ(1242)BFS+优先队列

摘要: Rescuehttp://acm.hdu.edu.cn/showproblem.php?pid=1242题意:"#"是墙,"."是路,"a"是要被救的人,"r"是救援者,"x"是guard。每移动一步,需要一个单位时间。杀死guard也需要一个单位时间。求r到a的最短时间。第一次听说优先队列,不得不承认我还是太弱了!!!#include #include #include #include using namespace std;char map[201][201];bool flag[201] 阅读全文

posted @ 2013-08-11 19:21 Chiryen 阅读(220) 评论(0) 推荐(0) 编辑

2013年8月9日 #

HDOJ(1728)逃离迷宫

摘要: HDOJ 1728http://acm.hdu.edu.cn/showproblem.php?pid=1728BFS求最少转过的弯#include #include #include using namespace std;int map[101][101];int w[101][101]; //记录到当前点已经转过个弯,初始化为-1,检测该点是否已遍历struct node{ int x; int y;}now,temp;int dx[]={0,1,0,-1};int dy[]={1,0,-1,0};int m,n;bool BFS(int x1,int y1,int x2,in... 阅读全文

posted @ 2013-08-09 16:57 Chiryen 阅读(361) 评论(0) 推荐(0) 编辑

2013年8月3日 #

最小生成树(HDOJ 1863)

摘要: 畅通工程http://acm.hdu.edu.cn/showproblem.php?pid=18631.Prim算法:Prim算法是由一个点(最初的集合)向外延伸,找到与集合相连权值最小的边,然后把对应顶点拉到集合里,直到所有的顶点全部在集合里为止。Prim算法的演示如下:http://sjjp.tjuci.edu.cn/sjjg/DataStructure/DS/web/flashhtml/prim.htm#include const int INF=9999999;const int MAXV=101;int map[MAXV][MAXV];int res;void Prim(int ma 阅读全文

posted @ 2013-08-03 11:41 Chiryen 阅读(286) 评论(0) 推荐(0) 编辑

2013年8月2日 #

种类并查集(POJ 1703)

摘要: 1703 -- Find them, Catch themhttp://poj.org/problem?id=1703题目大意:有2个敌对帮派,输入D a b表示a,b在不同帮派,输入A a b表示询问a,b是否是在一个帮派。题解:因为并查集中的元素均是有联系的,否则也不会被合并到当前集合中。那么我们就把这2个元素之间的关系量转化为一个偏移量,假设x->y 偏移量0时 x和y同帮派x->y 偏移量1时 x和y不同帮派不妨继续假设,x的当前集合根节点tx,y的当前集合根节点ty。如果tx和ty不相同,那么我们把ty合并到tx上,并且更新deltx[ty]值(注意:deltx[i]表示 阅读全文

posted @ 2013-08-02 20:46 Chiryen 阅读(216) 评论(0) 推荐(0) 编辑

并查集(HDOJ 1856)

摘要: 并查集 英文:Disjoint Set,即“不相交集合”将编号分别为1…N的N个对象划分为不相交集合,在每个集合中,选择其中某个元素代表所在集合。常见两种操作:n 合并两个集合n 查找某元素属于哪个集合并查集实现的程序代码:int set[MAXN],rank[MAXN]; //set[i]=k表示i的父节点是k,rank[]存储树的深度。int FindSet(int x){ if(set[x]!=x) set[x]=FindSet(set[x]); return set[x];}//寻找x的根节点void MakeSet(int x){ set[x]=x; rank[x]=1;}//初始化 阅读全文

posted @ 2013-08-02 10:10 Chiryen 阅读(212) 评论(0) 推荐(0) 编辑

2013年7月30日 #

大数运算(加减乘除)

摘要: 加法void add(char a[],char b[],char d[]){ char c[10001]; int lena=strlen(a),lenb=strlen(b); int i,j,len; len=lena>lenb?lena:lenb; len++; c[0]='\0'; for(i=1;i57) { c[i]-=10; c[i+1]++; } } for(i=len;i>1;i--) if(c[i]==48) le... 阅读全文

posted @ 2013-07-30 19:09 Chiryen 阅读(671) 评论(0) 推荐(0) 编辑

扩展的欧几里得

摘要: POJ1061 青蛙的约会公青蛙一开始在x位置,母青蛙在y位置。公青蛙每次跳m米,母青蛙每次跳n米,并且都是向右跳的。地球经线长度是L,然后地球是圆的,也就是说,跳到L、L+1、L+2……其实就是跳到0、1、2。 公青蛙想追母青蛙,问多少次后它们能跳到一起。如果它们永远不能相遇,就输出Impossible(好可怜啊!)很明显嘛,就是求一个k,使x + k*m ≡ y + k*n (mod L) 嘛,木有错吧?至少我是这么想滴!然后对方程化简咯,就变成(n-m) * k ≡ x-y (mod L)咯。然后这个方程其实就等价于(n-m)*k + L*s = x-y咯。这就是ax + by = c求 阅读全文

posted @ 2013-07-30 18:42 Chiryen 阅读(214) 评论(0) 推荐(0) 编辑

母函数

摘要: 有1克、2克、3克、4克的砝码各一枚,能称出哪几种重量?每种重量各有几种可能方案?考虑用母函数来接吻这个问题:我们假设x表示砝码,x的指数表示砝码的重量,这样:1个1克的砝码可以用函数1+x表示,1个2克的砝码可以用函数1+x2表示,1个3克的砝码可以用函数1+x3表示,1个4克的砝码可以用函数1+x4表示,几种砝码的组合可以称重的情况,可以用以上几个函数的乘积表示:(1+x)(1+x2)(1+x3)(1+x4)=(1+x+x2+x3)(1+x3+x4+x7)=1+x+x2+2x3+2x4+2x5+2x6+2x7+x8+x9+x10从上面的函数知道:可称出从1克到10克,系... 阅读全文

posted @ 2013-07-30 18:35 Chiryen 阅读(418) 评论(0) 推荐(0) 编辑