dp[i][j]表示从i,j开始的最长路径,记忆化搜索一下。#include #include #include using namespace std;#define maxn 120int dp[maxn][maxn],map[maxn][maxn];int r,c;int dfs(int i,...
分类:
其他好文 时间:
2014-07-13 23:46:25
阅读次数:
259
题意:求0-B的满足
思路:数位DP,记忆化搜索
#include
#include
#include
#include
using namespace std;
int A, B;
int dp[20][200000];
int bit[20];
int dfs(int cur, int num, int flag) {
if (cur == -1)
return num ...
分类:
其他好文 时间:
2014-07-13 00:02:35
阅读次数:
338
原题:ZOJ 3681http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3681题意:给一个m,n,m表示m个人,可以把m个人分成k组,每组m/k个人,人数要一样,如果超过一半的组支持Italy的话,说明这n个人都支持Italy...
分类:
其他好文 时间:
2014-07-12 15:18:56
阅读次数:
166
题目链接:uva
1252
题意:
有n个长度为m的二进制串,每个都是不同的。
为了把所有字符串区分开,你可以询问,每次可以问某位上是0还是1。
问最少提问次数,可以把所有字符串区分开来。
思路来源于:点击打开链接
思路:
m很小,可以考虑状态压缩。
dp[s1][s2]表示询问的状态为s1时,此时能猜到状态包含s2时最小需要的步数。
当询问的几位=...
分类:
其他好文 时间:
2014-07-11 08:39:57
阅读次数:
244
#include#include#include#includeusing namespace std;int n,m;#define N 32#define mod 10007LL#define mod2 10000007#define inf 0x3ffffffftypedef long lon...
分类:
其他好文 时间:
2014-07-09 21:48:32
阅读次数:
358
HDU 4778 Gems Fight!
题目链接
题意:有n个背包,包里有一些宝石,现在爱丽丝和你轮流选背包,把包里宝石丢到锅中,然后如果锅中有宝石数量到s个,就会得到魔法石,并且可以继续选背包,两人都按最优策略去取,问最后两人魔法石会差多少。
思路:dp,dp[s]表示选背包状态为s时候的值,然后去记忆化搜索即可,注意如果当前生成魔法石就继续加,否则就减即可
代码:...
分类:
其他好文 时间:
2014-07-08 12:56:53
阅读次数:
170
题目链接:uva 10581 - Partitioning
for fun and profit
题目大意:给定m,n,k,将m分解成n份,然后按照每份的个数排定字典序,并且划分时要求ai?1≤ai,然后输出字典序排在k位的划分方法。
解题思路:因为有ai?1≤ai的条件,所以先记忆化搜索处理出组合情况dp[i][j][s]表示第i位为j,并且剩余的未划分数为s的总数为dp[i][...
分类:
其他好文 时间:
2014-07-05 23:56:30
阅读次数:
464
首先tarjan缩点,重新建图后,每个点的权值就是该点包含点的个数。
然后从入度为0的点开始记忆化搜索,dp[i]表示以i为根最多包含多少点。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define e...
分类:
其他好文 时间:
2014-07-02 08:37:48
阅读次数:
211
给出m条a年龄大于等于b的信息,要求可以比较的两个人不能放在同一组,问最少能分成几组。
由于是大于等于,所以原图可能构成强连通分量,意思就是有很多人年龄相同(想想也该知道,总共10w个人,肯定有很多人年龄重复= =!)将原图缩点后,对新图记忆化搜索求最长路。
如果不缩点,会RE。。。
#include
#include
#include
#include
#include
using na...
分类:
其他好文 时间:
2014-07-01 10:47:45
阅读次数:
269
dp[a][b][c],表示三个人从小到大依次在a,b,c位置时,距离结束最少的时间。
每次选一个人走到c+1位置搜索就好了。
坑点在于不能floyd,估计题目没说清楚,意思就是如果没送Li,那么Li~n的点连去都不能去。
#include
#include
#include
#include
using namespace std;
#define INF 0x3f3f3f3f
int d...
分类:
其他好文 时间:
2014-07-01 09:26:40
阅读次数:
248