上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 61 下一页
摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27024题意:求0-(n-1)的经过最多的标记的点的最短路。思路:首先我们可以spfa预处理出起点到标记的最短距离,标记的点到终点的最短距离,然后就是状压dp了,dp[state][u]表示在该状态下到达点u的最短路径。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define MAXN 555 9 #def... 阅读全文
posted @ 2013-10-10 20:03 ihge2k 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25956思路:dist[v][0]代表走到点v的最短路,dist[v][1]代表走到点v的次短路(dist[v][0]!=dist[v][1]),然后Dijkstra更新就可以了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define MAXN 5555 9 #define MAXM 55555510 #define in 阅读全文
posted @ 2013-10-10 16:37 ihge2k 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26764思路:dp[pos]表示0-pos这段字符串最少分割的回文子串,然后记忆化搜索(判断是否是回文子串的时候也用一个数组来记录是否是回文子串,记忆化搜索)。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define MAXN 1111 7 #define inf 1r)return 1;17 if(is_ok[l][r]!=-1)return is_ok[l... 阅读全文
posted @ 2013-10-09 11:04 ihge2k 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26913思路:水题一枚,就是求最大独立集。最大独立集=顶点数-最大匹配。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define MAXN 1111 8 #define FILL(a,b) memset(a,b,sizeof(a)) 9 10 int n,m,ly[MAXN];11 bool mark[MAXN];12 13 vectorg[MA 阅读全文
posted @ 2013-10-08 21:37 ihge2k 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4281题意:给出N个点,第一个点是裁判,其他N-1个点需要裁判过去回答问题,每个点需要的时间不一样,而每个裁判最多能回答M分钟的问题。题目分两问,第一问是如何分配可以使使用的裁判数最少,第二问是如何分配裁判,使裁判走过的总路程和最少,裁判一开始都在1,最终也要回到1。思路:首先我们可以把符合条件的集合预处理出来,然后对于第一问,可以用状态压缩解决,dp[state]表示该状态下的最少裁判数,对于第二问,就是多旅行商问题了,dp[i][j]表示状态为i,在位置j的最小花费,然后开一个best数组来保存 阅读全文
posted @ 2013-10-07 20:22 ihge2k 阅读(573) 评论(0) 推荐(1) 编辑
摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25915题意:求一个数不断地除以他的因子,直到变成1的时候 除的次数的期望。思路:设一个数的约数有num个,E[n] = (E[a[1]]+1)/num+(E[a[2]]+1)/num+...+(E[a[num]]+1)/num+1 ,而a[num]==n,于是整理得:E[n]=(E[a[1]]+E[a[2]]+...+E[a[num-1]]+num)/(num-1)。然后预处理出所有的结果。 1 #include 2 #include 3 #include 4 阅读全文
posted @ 2013-10-07 15:41 ihge2k 阅读(244) 评论(1) 推荐(0) 编辑
摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25914思路:dp[state]表示当前状态下要消耗的最小的shots。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define inf 1<<30 7 8 int n,val[17],dp[1<<17]; 9 char map[17][17];10 11 int main()12 {13 int _case,t=1;14 scanf(&quo 阅读全文
posted @ 2013-10-07 15:15 ihge2k 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25913思路:易证存在一条从左上角到右下角的折线,沿着格子边缘的...其中处于折线下方的全部运送到左边去,其他运送到上边去...那么这个折线就相当于从上面走到下面得分最大...直接dp就可以。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define FILL(a,b) memset(a,b,sizeof(a)) 7 8 int n,m,Ura[555][555],R. 阅读全文
posted @ 2013-10-07 11:12 ihge2k 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26881思路:我们可以二分最大危险度,然后建图,由于每个休息点只能用一次,就要拆点,将每个休息点拆点,边容量为1,代表只能使用一次,然后跑最大流验证。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define MAXN 222 9 #define MAXM 222222 10 #define inf 1que... 阅读全文
posted @ 2013-10-06 22:16 ihge2k 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25909思路:好久没接触数位dp了=.=!,搞了这么久!一类记忆化搜索。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define FILL(a,b) memset(a,b,sizeof(a)) 7 typedef long long ll; 8 9 ll dp[33][2][33];10 int n,digit[33];11 12 13 ll dfs(int pos. 阅读全文
posted @ 2013-10-06 16:53 ihge2k 阅读(158) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 61 下一页