上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 30 下一页
  2012年9月11日
摘要: 字典树模板题。CODE:字典树#include<iostream>usingnamespacestd;structTrie{Trie*next[26];intcount,value;Trie(){for(inti=0;i<26;i++)next[i]=0;value=0;count=1;}};voidinsert(Trie*&root,char*s){inti=0,branch=0;Trie*p=root;if(!p){p=newTrie();root=p;}while(s[i]){branch=s[i]-'a';if(p->next[branc 阅读全文
posted @ 2012-09-11 20:09 有间博客 阅读(184) 评论(0) 推荐(0) 编辑
  2012年9月5日
摘要: DFS。CODE:#include<stdio.h>#include<stdlib.h>#include<string.h>usingnamespacestd;constintSIZE=101;intv[SIZE][SIZE];intpath[SIZE];intp,q,flag;constintdx[8]={-1,1,-2,2,-2,2,-1,1};constintdy[8]={-2,-2,-1,-1,1,1,2,2};//字典序,从上至下,从左至右。intcheck(intr,intc){if(r>=0&&c>=0&&a 阅读全文
posted @ 2012-09-05 21:11 有间博客 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给你n个城市,m条道路,以及A城市与B城市之间隧道的限高,让你求最小路径。思路:二分枚举所有的高度,然后通过Dijkstra算法求得最小的路径值。难点:(1)建图时有点麻烦。(2)枚举是判断的条件与Dijkstra中的判断的条件有点麻烦。(这道题我样例全过了,但是还是WA,找不到BUG,等我学了SPFA与用邻接表建图时再来看看。)(现在知道原因了,我二分查找悲剧的写错了,由于最后的mid不一定满足条件,所以需要用一个h来保存。)放这提醒自己。WA CODE:#include<stdio.h>#include<stdlib.h>#include<strin 阅读全文
posted @ 2012-09-05 18:05 有间博客 阅读(222) 评论(0) 推荐(0) 编辑
  2012年9月4日
摘要: 题意:n个高矮不等的堆。每次可以从一个堆拿一块移动到另一堆。问起码移动几许次能使他们全都相等。思路:好经典的题目,看到过不只1次了。所有数的平均数与所有的数的差的绝对值加起来除以二。即 sum/n; ans += abs(sum-a[i]); ans/=2;CODE:#include<stdio.h>#include<stdlib.h>#include<string.h>usingnamespacestd;constintSIZE=101;inta[SIZE];intmain(){intn;inttimes=0;while(scanf("%d&qu 阅读全文
posted @ 2012-09-04 22:09 有间博客 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题意:按顺序给你N个数,将这N个数分成连续的M段,使得这M段每段的和中的最大值最小,输出最小值(1<=N<=100000,1<=M<=N,每个数在1到10000之间)。思路:由于函数具有单调性的特征,因此可以用二分枚举的办法去实现它,这与POJ3258有非常相似的地方,但这里不需要排序。CODE:#include<cstdio>#include<cstdlib>#include<iostream>usingnamespacestd;constintSIZE=100010;inta[SIZE];intlow_bound,high_bou 阅读全文
posted @ 2012-09-04 17:14 有间博客 阅读(162) 评论(0) 推荐(1) 编辑
摘要: 题目大意:Freddy Frog暗恋Fiona Frog,在他们之间有n快石头,告诉你这n快石头的坐标,第一快为Freddy Frog的坐标,第n块为Finoa Frog的坐标,Freddy可以借助石头经过任何路径到达Fiona那里,问他最小的弹跳距离是多少(即由Freddy去Fiona的最短路径中的最长边)。思路:许多人是用Dijkstra做的,其实我个人认为这一道题作者的原意还是用Prim算法的变形。应用它的贪心去更新最长的边。由于输出是.3f而WA了 N次。CODE:#include<cstdio>#include<cstdlib>#include<cstr 阅读全文
posted @ 2012-09-04 13:49 有间博客 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题目大意:一群牛要过河,河中有许多石墩,FJ为了锻炼牛的跳跃力,将其中的m个石墩摘掉,求所有情况中最大的跳跃最小值。思路:用一个变量sum累加,跳跃值mid通过二分来枚举。(1)如果可以摘除的石墩超过m的话,说明牛的跳跃值太大了,并不是最小跳跃值。(2)如果可以摘除的石墩刚好等于m的话,也不一定是最小的。(3)如果小于m的话,说明mid偏小。CODE:#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>usingnamespacestd;constintSIZ 阅读全文
posted @ 2012-09-04 10:47 有间博客 阅读(980) 评论(0) 推荐(0) 编辑
  2012年9月3日
摘要: 大意:青蛙过河,河中有一定数量的石墩,求可能的最小步长过河。思路:将石墩距离起始点的距离排序,然后通过二分枚举求得是否存在一个m值(0~L),使得青蛙可以走过所有的石墩。如果存在且小于M,则记录满足条件的最小值。小结:二分枚举的题的特点都是是否单调连续,如果题目有这个特点的话,那么就可以考虑通过二分的思想来求解。CODE:#include<iostream>#include<stdio.h>#include<string.h>usingnamespacestd;constintSIZE=500010;intL,N,M;inta[SIZE];intcmp(co 阅读全文
posted @ 2012-09-03 18:38 有间博客 阅读(952) 评论(0) 推荐(0) 编辑
摘要: DFS练习。CODE:#include<stdio.h>#include<stdlib.h>#include<string.h>usingnamespacestd;constintSIZE=51;intsave[SIZE],b[SIZE];intans,n;voidprint(){for(inti=1;i<=6;i++){printf(i!=6?"%d":"%d\n",save[i]);}return;}voiddfs(intd){if(ans==6){print();return;}if(d>n)retu 阅读全文
posted @ 2012-09-03 10:09 有间博客 阅读(119) 评论(0) 推荐(0) 编辑
  2012年9月2日
摘要: 大意:奥林匹克冰球运动的一种变体,给定你一个特定的迷宫,出口以及入口,从出口到入口最小走几步。思路:(1)不可用BFS,冰球每次撞击障碍物时,障碍物会消失。而BFS会导致整个迷宫状态的改变,所以只能用DFS。(2)当冰球是运动时,撞击障碍物,然后停下,需要回溯。静止时,不可能向有障碍物的方向走。(3)冰球不向普通的走法一样是一步一步走,而是一条直线的走。它可能在运动的过程中会超出边界,这就需要判断,只有继续递归调用时,步数才会加1。CODE:#include<stdio.h>#include<stdlib.h>#include<string.h>usingn 阅读全文
posted @ 2012-09-02 20:41 有间博客 阅读(212) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 30 下一页