其他dp
Fb_by
这个作者很懒,什么都没留下…
展开
-
UVA 11404 Palindromic Subsequence 【LCS】
题意:给你一个字符串,要你删除一些字符让剩下的字符组成尽量长的回文串。分析:将原串反转下,然后和原串求一边LCS,顺便把字典序最小的存下来,但是这个串并不一定是回文串,但是我们可以确定他的前一半一定是回文串的前半部分。最后注意长度的奇偶。代码:#include#include#include#include#include#include#include#includ原创 2016-03-30 20:52:01 · 301 阅读 · 0 评论 -
UVA 10534 Wavio Sequence 【LIS】
题意:找出一个最长的奇数序列长度2k+1,要求前k+1个递增后k+1递减。分析:正反跑两遍LIS然后取min找出合法序列,最后找最长的。#include#include#include#include#include#include#include#include#include#include#include#define INF 0x3f3f3f3f#defin原创 2016-03-28 14:32:27 · 273 阅读 · 0 评论 -
UVA 1452 Jump 【约瑟夫环】
题意:约瑟夫问题变形,输出最后三个人。分析:最后一天只有1个人(s1=0),到第二天s1=(s1+k)%2=k%2,这时第二天的人(s2)也可以确定了s2=(s1+1)%2=(k+1)%2,这时s3=2。代码:#include #include #include #include #include #include #include #include #include原创 2016-04-08 21:05:03 · 281 阅读 · 0 评论 -
UVALive 4256 Salesmen 【简单dp】
题意:给你一棵树,和一串序列,求最少改变多少个数使得序列中的每个相邻的数要么相等要么在树上相邻。分析:设状态dp[i][j]表示长度为i以j结尾最少修改几次合法。转移dp[i][k]=min(dp[i][k],dp[i-1][j]+(a[i]!=k)) k是当前最后数字,j是k前一个,j可以等于k(处理与前面相等),若j与k在树上相邻,判断a[i]!=k,dp[i][k]+1;代码:原创 2016-03-26 15:30:21 · 283 阅读 · 0 评论 -
UVA 11584 【简单dp】
题意:求一个字符串最少由多少个回文串组成。分析:定义dp[i][j]前i由多少回文串组成。转移方程dp[i]=min(dp[i],dp[j-1]+1).代码:#include#include#include#include#include#include#include#include#include#include#include#define INF 0x3f原创 2016-03-26 15:18:48 · 318 阅读 · 0 评论 -
BestCoder Round #78 (div.2)
B:DP题意:n个数中取若干数的GCD,求所有不同取法的GCD和。分析:我们令dp[i][j]表示在前i个数中,选出若干个数使得它们的gcd为j的方案数,于是只需要枚举第i+1个数是否被选中来转移就可以了令第i+1个数为v,当考虑dp[i][j]的时候,我们令dp[i+1][j] += dp[i][j]dp[i+1][j]+=dp[i][j](v 不选),dp[i+1][gcd(j,v原创 2016-04-06 22:58:15 · 273 阅读 · 0 评论 -
UVALive 4731 Cellular Network 【dp】
#include#include#include#include#include#include#include#include#include#include#include#define INF 0x3f3f3f3f#define Mn 105#define Mm 200#define mod 1000000007#define CLR(a,b) memset((原创 2016-04-06 22:53:56 · 306 阅读 · 0 评论 -
uva10635 【LIS】
题意:求两个数组的最长公共子序列长度(LCS),每个序列中的元素没有重复的且取值范围1~n*n。分析:直接求LCS时间复杂度为o(n*n)肯定不行,考虑题目的特殊性,数的范围1~n*n,且任意两个数都不相同。如果把第一个数组重新编号:12,3,4...p+1。把第二个数组也对应起来,实际上问题就转化为了求第二个数组的LIS(可以用o(nlgn)的算法求解。问题就得到了解决。代码:#原创 2016-03-21 22:09:44 · 270 阅读 · 0 评论 -
UVA 1169 【单调队列优化dp】
题意:给出机器人的最大负重c,和n个垃圾,接下来n行代表垃圾的坐标和重量w,一开始机器人在原点,机器人只能走横竖,机器人可以拿多个垃圾,只要不超过最大负重,然后放回垃圾桶,垃圾桶在原点,问机器人将所有垃圾放到垃圾桶最少需要走的距离。分析:定义dp[i]表示,前i个垃圾放回垃圾桶的最短距离。转移方程为:dp[i]=min(dp[j]+dis0[j+1]+sumdis[i]-sumdi原创 2016-03-24 21:15:22 · 368 阅读 · 0 评论 -
BestCoder Round #77
链接:http://bestcoder.hdu.edu.cn/1001:子集异或和,n=1不为0其他都为0。代码:#include#include#include#include#include#include#include#include#include#include#include#define INF 0x3f3f3f3f#define Mn 105原创 2016-03-27 22:03:46 · 266 阅读 · 0 评论