上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 61 下一页
摘要: 题目链接: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 阅读(383) 评论(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 阅读(291) 评论(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 阅读(832) 评论(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 阅读(706) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1514思路:orz...大牛讲的太妙了:题意是给4堆(堆的高度小于等于40)有颜色(颜色的种类小于等于20)的物品,你有一个篮子最多能装5件物品,每次从这4堆物品里面任取一件物品放进篮子里,但是取每堆物品时,必须先取上面的物品,才能取下面的物品,如果发现篮子里的两种物品的颜色一样,那么把这两种物品拿出来,问最后最多能拿出多少对物品?;解题思路:记忆化搜索+dp+状态压缩;因为40×40×40×40不会太大,所以可以用dp[x[1]][x[2]][x[3]][x[4]]记 阅读全文
posted @ 2013-05-11 23:51 ihge2k 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 贴几道记忆化搜索题:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1208思路:记忆话搜索,不过有一个trick就是如果map[i][j]==0并且不是终点,就直接返回0了。如果map[i][j]表示跳几格 dp[i][j]表示有几种条法,其实就是一个子状态继承问题,如果map[i][j]为k,那么 dp [i+k][j]和dp[i][j+k]就可以增加 dp[i][j]种跳跃方法了。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstrin 阅读全文
posted @ 2013-05-11 21:35 ihge2k 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2677思路:一开始没思路,看大牛一博客也的。。。orz....为了方便处理给每一个装备一个标号,并记录价格和拥有数量,买不到的装备价格用一个特殊的数标记,然后对需要的装备进行递归处理,对于一件装备,如果已经拥有就直接用,如果没有就买,如果买不到就合成。数据保证需要的装备肯定能得到。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 阅读全文
posted @ 2013-05-11 21:18 ihge2k 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1625、思路:大牛说是floyd判环,一想确实如此,我还一直在想如果用记忆化的怎么处理环呢...orz....首先通过Floyd预处理,把所有的路径数求出来,即d[i][j]+= d[i][k] * d[k][j]。然后确定有无环,如果存在环的话,即d[k][k] != 0(存在环),那么所有的点i,j,只要经过了k(i->k->j),那么它的路径数是不能确定的,反之,确定。View Code 1 #include 2 #include 3 #include 4 using namesp 阅读全文
posted @ 2013-05-11 11:53 ihge2k 阅读(660) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3061思路:最小割的模型,具体的构图是:从源点连接正权的点,流量上限为该点的权值;从负权点连接汇点,流量上限为该点权值的绝对值;所有具有拓扑关系的点直接,从st连接end一条INF上限的边;求出最大流,最后用所有正权点的和减去最大流(最小割),便是答案。具体请参见07年的集训队论文《最小割模型在信息学竞赛中的应用》。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 usi 阅读全文
posted @ 2013-05-10 21:53 ihge2k 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 题目链接:网上一大牛说的好:结论:正的权值的和-建图后的最小割的容量选择了一条边就会选择两个点,边的花费为正,点的花费为负,把边看成点,这个点向两个端点连一条边,表示选择这条边就会选择这两个点然后题目就相当于最大权闭合图的模型了(最大权闭包模型中vs与正收益的点连边,负收益的点与vt连边,容量取绝对值,然后点与点之间连容量为inf的边)题意:有n个点,m个选择,建造n个点各自需要一定花费,每个选择有一定的获利,会选择两个点,当然也要花费。求最大的获利每个选择看成是获利点,每个点看成是花费点,新建源点向获利点建边,权值为获利的大小,花费点向汇点建边,权值为花费的大小每个选择向相应的两个点连一条容 阅读全文
posted @ 2013-05-10 21:21 ihge2k 阅读(476) 评论(0) 推荐(0) 编辑
上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 61 下一页