随笔分类 -  搜索

hdu 4514
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4514题意:先判断给定的图中是否有环,没有则对森林进行求最长路。思路:dfs判断是否有环,然后对每棵树,两次dfs求最长路,最后取最大的。View Code #include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#pragma comment(linker, "/STACK:36777216")//开大点栈using namespace std; 阅读全文

posted @ 2013-03-23 10:57 aigoruan 阅读(220) 评论(0) 推荐(0)

hdu 4513
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4513和这个题很像,YY一下就可以了http://www.cnblogs.com/aigoruan/archive/2012/07/08/2581217.html思路:二分+暴力匹配View Code #include<set>#include<map>#include<stack>#include<queue>#include<cmath>#include<bitset>#include<string>#include< 阅读全文

posted @ 2013-03-22 23:48 aigoruan 阅读(441) 评论(0) 推荐(0)

ACM的第二乐章--BFS
摘要:bfs和dfs一样,也是以树形搜索形状进行的,只不过dfs是以树根开始一个个的搜索,而bfs则以步数、层次展开搜索,也就是从树根一层层的向外拓展。这种拓展需要的空间一般都是指数级的,所以不能像dfs一样灵活搜索,往往都是在一定的剪枝策略下展开的,因而bfs一般适合求解最优解。标志性的bfs里会有一个... 阅读全文

posted @ 2012-10-30 09:11 aigoruan 阅读(166) 评论(0) 推荐(0)

2012 天津赛区 A题 hdu 4431
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4431题意:给13个牌,问你可以糊那些牌。思路:现场队友提醒就知道思路了,枚举每一张牌,看能不能win。却被麻将的规则虐了,题目好像没说下面的数据呀:1s 1s 1m 9m 1p 9p 1c 2c 3c 4c 5c 6c 7c (糊9s)View Code #include<stdio.h>#include<string.h>#include<iostream>#include<set>#include<utility>using namespace 阅读全文

posted @ 2012-10-26 18:17 aigoruan 阅读(947) 评论(0) 推荐(0)

hdu 4230 Robot Navigation
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4230题意:给一个二维地图,一个机器人有三种操作:1、向前走;2、左转90度;3、右转90度。现给定起点和终点,问有多少种不同的操作是最少的。思路:这个题目神似:http://www.cnblogs.com/aigoruan/archive/2012/10/05/2712432.html正解应该是先弄出最短路径后,再DFS求解答案,但其实可以直接BFS暴力出答案的。每个点记录四个方向的最少操作,再记录到这个点的这个方向有多少种不同的方向。View Code #include<stdio.h>#in 阅读全文

posted @ 2012-10-08 12:07 aigoruan 阅读(188) 评论(0) 推荐(0)

hdu Robot Navigation
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4166题意:给一个二维地图,一个机器人有三种操作:1、向前走;2、左转90度;3、右转90度。现给定起点和终点,问有多少种不同的操作是最少的。思路:正解应该是先弄出最短路径后,再DFS求解答案,但其实可以直接BFS暴力出答案的。每个点记录四个方向的最少操作,再记录到这个点的这个方向有多少种不同的方向。题目需要判断起点和终点重合的情况。View Code #include<stdio.h>#include<string.h>#include<iostream>#include 阅读全文

posted @ 2012-10-05 19:05 aigoruan 阅读(322) 评论(9) 推荐(1)

bnu Treasure Diving
摘要:http://www.bnuoj.com/contest/problem_show.php?pid=26305题意:给一个无向图,现选定图中的k(k<=8)个点,如果最多能走tot米,问最多能经过几个点(要求回到原点)。思路:暴力出k个点之间的最短距离,剩下k个点还是暴力弄。但这样还是超时了,注意到tot最多只是1000000,因为要回到原点,所以距离大于tot的肯定不满足。View Code #include<stdio.h>#include<string.h>#include<iostream>#include<vector>#incl 阅读全文

posted @ 2012-10-04 11:00 aigoruan 阅读(207) 评论(0) 推荐(0)

uva 10273 - Eat or Not to Eat?
摘要:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=1214&mosmsg=Submission+received+with+ID+10683084题意:农场有n头奶牛,每头奶牛都有一个产奶周期ti天(ti<=10),每天产奶ai,每天农场都想杀一头奶牛吃,但希望杀产奶最小的一头,如果有多头产奶最小,则那天将不杀。现问最后剩下几头,杀最后一头牛是第几天。思路:n头牛产奶周期的最小公倍数G一定小 阅读全文

posted @ 2012-10-04 10:54 aigoruan 阅读(235) 评论(0) 推荐(0)

2012 ACM/ICPC Asia Regional Tianjin Online A very hard mathematic problem
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4282思路:枚举Y、Z ,二分X;View Code #include<stdio.h>__int64 num;int pd(__int64 z,__int64 y,__int64 a){ __int64 i,b,x; __int64 max=y-1,min=1; while(min<max) { x=(min+max)/2; b=x; for(i=1;i<z;i++) b*=x; if((b+a+x*y*z)>... 阅读全文

posted @ 2012-09-09 18:19 aigoruan 阅读(177) 评论(0) 推荐(0)

2012 ACM/ICPC Asia Regional Tianjin Online Travel
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4284思路:预处理15个点之间的最短距离后暴力。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>using namespace std;const int maxn = 105;const int inf = 1<<29;int dis[maxn][maxn];int h[maxn],d[maxn],c[maxn],vis[maxn];i 阅读全文

posted @ 2012-09-09 18:11 aigoruan 阅读(289) 评论(0) 推荐(0)

2012 ACM/ICPC Asia Regional Changchun Online USACO ORZ
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4277思路:暴力;View Code #include<stdio.h>#include<iostream>#include<set>using namespace std;#define MAXN 16#define STA 1<<17int up,a,bc,b,c;int num[MAXN],val[STA];set<int>Map[150005];void inite(){ int i,pos,temp; for(i=0;i<=up;i+ 阅读全文

posted @ 2012-09-08 20:13 aigoruan 阅读(182) 评论(0) 推荐(0)

ZOJ Monthly, August 2012 3643 Keep Deleting
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3643题意:给出A串和B串,删除B串中的A串。思路:栈+暴力,strcmp函数比较的时候,如果不相等就会马上退出,这样最坏的时间复杂度是O(maxn/256*(1+256)*256/2)。ps:不知道官方解题是怎么样弄的。View Code #include<stdio.h>#include<string.h>#define maxn 512005char as[maxn],bs[2000],st[maxn];int ans,tp;int main 阅读全文

posted @ 2012-08-26 21:41 aigoruan 阅读(196) 评论(0) 推荐(0)

ZOJ Monthly, August 2012 3641 Information Sharing
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3641题意:有三种操作:1)arriveNamema1a2..am:名字为Name的人到达,带有m个信息:a1a2..am(m<=10)2)shareName1Name2:Name1和Name2共享信息(注意是一直共享的)3)checkName:检查Name拥有的信息,并要求输出。信息最多1000个,现有n个这些操作。思路:并差集,将共享信息的人弄成一个连通分量,并合并信息。View Code #include<stdio.h>#include<s 阅读全文

posted @ 2012-08-26 21:38 aigoruan 阅读(191) 评论(0) 推荐(0)

uva 10275 Guess the Number!
摘要:Guess the Number!http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1216题意:给一个大数,问能否写成n^n。如果能,输出n,否则输出-1。思路:除了1^1=1,2^2=4特殊外,其它数n^n所得到的数具有唯一的位数。这样可通过所给的大数的位数确定是哪个数,然后求n^n和所给的大数比较就行了。n^n用快速幂来弄,然后用傅立叶大数相乘模板卡过去了,这个方法可能不是正解。View Code #include<st 阅读全文

posted @ 2012-08-26 20:51 aigoruan 阅读(242) 评论(0) 推荐(0)

hdu 4360
摘要:/*题目大意是给一个n个点m条边的无向图。每条边有权值和一个字母标号,字母标号有四种 'L' 'O' 'V' 'E'现在要从1点到n点去找求找到一条路径,路径按顺序构成了若干个LOVE 注意必须是完整的LOVE然后要求有LOVE的的条件下路径最短,如果有多条最短路,找LOVE最多的那条思路就是拆点将每个点分为四个,代表L,LO,LOV, LOVE四种状态*/#include<stdio.h>#include<string.h>#include<iostream>#include<stdli 阅读全文

posted @ 2012-08-15 20:41 aigoruan 阅读(243) 评论(0) 推荐(0)

tarjan
摘要:/*http://acm.hdu.edu.cn/showproblem.php?pid=4183题意:在二维平面上给N个圆,每个圆的都有一种颜色光,每种颜色光的频率是不一样的。但保证一定有两种颜色:一种频率为400(最小),一种频率为789(最大)。现在频率为400的为起点,频率为789的为终点。起点和终点是否能构成一个回路,且起点到终点的路径中光频率要单调递增,终点回到起点的路径中列频率单调递减。思路:可以将圆看成一个点,圆之间相交看成点与点之间的边。这样就可以转化成在一个无向图里求给定点的环问题,因此可以直接套用tarjan求环。但要注意处理无向图中的割点问题。至于路径的单调性,可以这样做 阅读全文

posted @ 2012-07-10 22:45 aigoruan 阅读(240) 评论(0) 推荐(0)

hdu 1867 A + B for you again
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1867题意:给你两个字符串,求输出两个字符串合并的最小字符串;如果第一个字符串的末尾几个字符和第2个字符串的前面几个字符相同即可输出一遍即可,例如:asdf df ->asdf;asdf sd->asdfsd; asdf sdc->asdfsdc;规则:1.长度越短优先 2.字典序越小优先思路:正解是kmp,百度吧~~~ 我的思路是从大到小枚举第一个串的一个长度L,先检查第一个串的L字符值总和N与第二个串的字符总和M是否相等(长度都是L),如果相等则进行匹配,如果匹配成功就是答案了。有点贪心 阅读全文

posted @ 2012-07-07 21:27 aigoruan 阅读(158) 评论(0) 推荐(0)

hdu 2460 & poj 3694 Network
摘要:http://poj.org/problem?id=3694http://acm.hdu.edu.cn/showproblem.php?pid=2460题意:给一个无向图,每加入一条新边后,统计桥的数目。思路:看完解题报告后,觉得自己傻了,几乎是暴力的方法。用tarjan先统计图中的每个桥,并标记(以桥的出点作标记,即:uv是桥,标记v),并全部归结到以1为根的树中。查询的时候用类似并差集的方法,不断向根走,同时检查经过的点是不是桥,当u=v的时候就可以退出了。PS:如果原图是一线树,每次查询都选择两端点。可以知道时间复杂度为10^8,真不知道这样也可以过,只能说数据水了,或者说每加入一条边, 阅读全文

posted @ 2012-07-06 15:27 aigoruan 阅读(297) 评论(0) 推荐(0)

poj 3592 & uestc 1315
摘要:http://poj.org/problem?id=3592http://www.acm.uestc.edu.cn/problem.php?pid=1315题目大意:给定一个矩阵,西南角为起点,每个单元都有一定价值的金矿(#表示岩石,不可达,*表示时空门,可以到达指定单元),队#外,每个点只能向右走或向下走,而且可以重复经过一个点。现在要求得最多可以获得多大利益。思路:原矩阵可以看成一个有向图,因为可以重复经过一个点,所以如果图中有环(因为有环),则环内的所有值都可以取完的,所以把环缩成一个点后,就成一棵有向无环图。从起点进行DFS记忆化搜索找最大值就好了。PS:在进行找环缩点时,我认为从起点 阅读全文

posted @ 2012-07-06 12:25 aigoruan 阅读(177) 评论(0) 推荐(0)

poj 2942 Knights of the Round Table
摘要:http://poj.org/problem?id=2942题目大意:N个骑士中某些骑士之间会有仇恨。骑士们开会时围坐在一个圆桌旁。一次会议能够举行,当且仅当没有相邻的两个骑士相互仇恨,且开会人数为大于2的奇数。若某个骑士任何会议都不能参加,那么就必须将它踢出。给出骑士之间的仇恨关系,问需要踢出多少个骑士。思路:题目给出的是一对对相互仇恨的骑士,要使得骑士间环成一环,相邻没有仇恨,就要建图的时候就不能出现相邻有仇恨的。然后问题转化成求一个图里面的奇环,而在一个双连通图里,如果存在一个奇环,则这个双连通图中的每一个点,都能在一个奇环里(很蛋疼的想法)。所以最后就是在一个双连通图里找奇环,利用正负 阅读全文

posted @ 2012-07-05 13:28 aigoruan 阅读(155) 评论(0) 推荐(0)

导航