2013年8月3日

HDU 4640 状态压缩DP 未写完

摘要: 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640解题思路:首先用一个简单的2^n*n的dp可以求出一个人访问一个给定状态的最小花费,因为这i个人是等价的,所以用dp[i][mask]表示i个人跑完mask这个状态的最小花费,所以首先枚举集合mask,对于dp[i][mask],枚举mask的子集v,dp[i][mask]可以由dp[1][v],dp[i-1][mask^v]转移过来,注意这里用来合并的集合是不能有重复的,这个类似背包……这样就可以算出对于每个状态三个人访问完的最小花费,之后对于给定的需要访问的状态,枚举包含这个给定状态的集合 阅读全文

posted @ 2013-08-03 21:38 allh123 阅读(356) 评论(0) 推荐(0) 编辑

poj 2955 Brackets 区间DP

摘要: 多做了几个区间DP后,还是有点感觉的,状态为什么要这样设计?状态转移方程为什么要这样写···像这个题,紧紧抓住两个准则,就是正则括弧的两种形式()[]左一段是正则的,右一段也是正则的,最优的结果要加起来这就是转移方程要写成dp[i][j] = max(dp[i][j],dp[i][k] + dp[k+1][j]]的原因。。。k在i和j的中间由于([])这种嵌套模式也是可以的,所以有if(a[i]与a[j]是匹配的) dp[i][j] = dp[i+1][j-1]+2```大概就是这样,细节自己注意一下就行贴代码: 1 #include 2 #include 3 # 阅读全文

posted @ 2013-08-03 19:28 allh123 阅读(167) 评论(0) 推荐(0) 编辑

做题推荐

摘要: 图论推荐:http://blog.csdn.net/shahdza/article/category/1376614http://blog.csdn.net/shahdza/article/details/6632538概率DP推荐http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.htmlhttp://www.cnblogs.com/183zyz/archive/2012/09/13/2683524.html区间DP专辑http://blog.csdn.net/liuqiyao_01/article/details/87974 阅读全文

posted @ 2013-08-03 18:46 allh123 阅读(166) 评论(0) 推荐(0) 编辑

HDU 4632 区间DP 取模

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4632注意到任意一个回文子序列收尾两个字符一定是相同的,于是可以区间dp,用dp[i][j]表示原字符串中[i,j]位置中出现的回文子序列的个数,有递推关系:dp[i][j]=dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]如果i和j位置出现的字符相同,那么dp[i][j]可以由dp[i+1][j-1]中的子序列加上这两个字符构成回文子序列,也就是dp[i][j]+=dp[i+1][j-1],注意边界特判一下就可以了(以上摘自杭电解题报告原文)里面忘了取模,结果输出的是负数,一直 阅读全文

posted @ 2013-08-03 16:56 allh123 阅读(341) 评论(0) 推荐(0) 编辑

线性筛法打素数表 可以做模板

摘要: 如果想了解详情,请点击下面链接:http://blog.sina.com.cn/s/blog_787c1f7b0100s0yx.html我的代码: 1 #include 2 #define N 5000005 3 bool v[N]; 4 int prime[N]; 5 int main() 6 { 7 int num=-1; 8 for(int i=2; i<N; ++i) 9 {10 if(!v[i]) prime[++num] = i;11 for(int j=0; j<=num && i*prime[j] < N; ++j)12... 阅读全文

posted @ 2013-08-03 14:57 allh123 阅读(260) 评论(1) 推荐(0) 编辑

Zoj 3529 A Game Between Alice and Bob 数论+博弈Nim 快速求数中有多少个素数因子

摘要: 本题涉及博弈论中的Nim游戏博弈。Nim游戏博弈详解链接:http://www.cnblogs.com/exponent/articles/2141477.html本题解题报告详解链接:http://blog.csdn.net/woshi250hua/article/details/7824609我的代码,写的较挫,4000多ms,压着时间过,时间限制是5s.我预处理了所有1-5*10^6的数的素因子个数,用的是dp的思想,先预处理1-5*10^6的数的最小素因子,存在a数组中,然后dp[i] = dp[i/a[i] ]+1;我觉得我代码最挫的地方是在求最小素因子时费时太多。。。。 1 #in 阅读全文

posted @ 2013-08-03 10:23 allh123 阅读(255) 评论(0) 推荐(0) 编辑

导航