摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1252题意都读了半天,orz...给出n个结点,每两个结点之间都有一个线路想通,不过有不同的颜色,然后给三个piece,分别在三个初始位置,piece移动的条件是通过的路径的颜色必须要与另外两个piece所在位置之间的路径颜色想同,求使三个点移动到同一个位置上所需要的最小步数……开个三位数组记录一下状态就好了,简单bfs.View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 阅读全文
posted @ 2013-05-12 23:25 ihge2k 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1307先说一下题意,就是给你n维起始点和终点的坐标,然后后面给出一系列的点,每一行表示这两个点之间有通路,最后让你判断一下能否从起点出发走到终点。由于最多不超过10维,那么我们把每个点的坐标转化为一个整数,然后建邻接表,这样dfs就可以了(值得注意的是我们用set来判重,当然你也可以用数组什么的)可以说是dfs+map+set的妙用了!View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath&g 阅读全文
posted @ 2013-05-12 22:12 ihge2k 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1226思路:广搜,每一个状态用一个结构体来保存,记录数组的长度,然后根据长度来扩展就可以了,这里值得注意的地方余数判重以及求大数取模。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<queue> 6 using namespace std; 7 #define MAXN 555 8 #defi 阅读全文
posted @ 2013-05-12 19:59 ihge2k 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2610http://acm.hdu.edu.cn/showproblem.php?pid=2611、很好的两道搜索题,都用到了判重。。。orz....不怎么会,看了大牛的解题报告才理解。。。跪神牛大牛的hdu 2610思路:题意很简单就是在给定的序列中找到固定个数的递增的子序列,如果子序列的总个数少于要求的个数,那么就把所有的子序列输出即可,注意每组测试用例就为有一空行。技巧一:重判,这里有两个重判,第一个重判是判断如果搜索的是子序列的第一个元素,那么判断从原始序列开始到当前位置是否已经出现过该元素 阅读全文
posted @ 2013-05-12 17:44 ihge2k 阅读(802) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2897转引:巴什博弈的变形:假设先取者为A,后取者为B,初始状态下有石子n个,除最后一次外其他每次取得石子个数必须在[p,q]之间。若当前石子共有n=(p+q)*r个,则A必胜,必胜策略为:A第一次取q个,以后每次若B取K个,A取(p+q-k)个,如此下去最后必剩下p个给B,所以A必胜。若n=(p+q)*r+left个(1<left<=p)B必胜,必胜策略为:每次取石子活动中,若A取k个,则B去(p+q-k)个,那么最后剩下left个给A,此时left<=p,所以A只能一次去完,B 阅读全文
posted @ 2013-05-12 00:14 ihge2k 阅读(701) 评论(0) 推荐(0) 编辑