××××××××dp××××××××
WePlayDirty
emmmmmmm
展开
-
codeforces 571B Minimization(dp)
OBLEMSSUBMIT CODEMY SUBMISSIONSSTATUSHACKSROOMSTANDINGSCUSTOM INVOCATIOND. Minimizationtime limit per test2 secondsmemory limit per test256 megabytes原创 2015-09-02 17:19:42 · 2863 阅读 · 0 评论 -
多重背包问题
DescriptionMarsha and Bill own a collection of marbles. They want to split the collection among themselves so that both receive an equal share of the marbles. This would be easy if all the marbl原创 2015-01-25 16:30:31 · 2317 阅读 · 0 评论 -
背包 dp
#include#include#includeusing namespace std;int dp[100002];int main(){ int n; while(cin>>n,n!=0) { int a[1200]; memset(dp,0,sizeof(dp)); i原创 2015-01-23 12:33:51 · 2439 阅读 · 0 评论 -
多重背包的两种解决方法(poj1276)
多重背包是指装入背包的若干见物品种,可以拿的数量有上限。第一种就是二进制优化,转换成01背包,例如一件物品可以拿26件,每一件的权值是w,26可以写成(1+2+4+8)+11,所以就把这种物品分解成权重为w,2w,4w,8w,11w的五种物品,这五种物品组合,一定能组成小于等于26的任意一个数,这样就把有26件的一种物品换成了五种各有一件的物品,用01背包就能解决了。poj原创 2016-08-09 19:51:18 · 2627 阅读 · 0 评论 -
(多校第六场1002)HDU5794 A Simple Chess(Lucas+dp)
给你一个n×m的棋盘,给出r个点,表示棋盘中有r个坏点不能走,问马从(1,1)走到(n,m)有多少中走法,每一步必须是往横纵坐标不减小的方向走。如果棋盘上没有坏点,那从(1,1)走到(n,m)满足方程1+2x+y=n && 1+2y+x=m ,如果方程的两个解大于等于0,那就可达,否则不可达。如果可达,方案数就是组合数C(x+y,x)。如果棋盘上有一个坏点,方案数就是(没有坏点的方案数)原创 2016-08-05 15:24:22 · 2731 阅读 · 0 评论 -
(多校第五场1003)HDU5773 Divide the Sequence
从后面开始累加,统计合法的连续序列个数(序列和大于等于0就算一个,然后重新累计),大于等于0的就是合法的,这样就能保证所有前缀都大于等于0。#include #include #include #include #include #include #include #include #include #include #include #include #include原创 2016-08-03 20:18:09 · 2657 阅读 · 0 评论 -
The mook jong
The mook jong Accepts: 507 Submissions: 1281 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Problem DescriptionZJiaQ want to becom原创 2015-08-08 21:48:13 · 2123 阅读 · 0 评论 -
LCS(最长公共子序列) GST(最长公共子串,广义后缀树)
最长公共子串(LCS)最长公共子串(LCS),有三种情况:1.公共子串的元素必须相邻. 2.公共子串的元素可以不相邻联单3. 求多个字符串而不是两个字符串的最长公共子串1.公共子串的元素必须相邻: LCS问题就是求两个字符串最长公共子串的问题。解法就是用一个矩阵来记录两个字符串中所有位置的两个字符之间的匹配情况,若是匹配则为1,否则为0。然后求出对角线最长的1序列,其对应的位转载 2015-08-14 21:01:11 · 5433 阅读 · 2 评论 -
HDU1024 Max Sum Plus Plus //DP
题目链接题意:给一列数,从这列数找出m个互不相交的区间,求这m个区间里的数相加的最大和。建立dp状态dp[i][j],代表到第i个数时分了j段,并且第j段包含第i个数的最优解;所以状态转移方程为:dp[i][j]=Max(dp[i-1][j]+a[i] , max( dp[k][j-1] ) + a[i] ) 0可以画一个矩阵去模拟一下过程去理解,用这个方程推是O(n^原创 2016-05-05 12:19:03 · 2257 阅读 · 0 评论 -
(多校第四场1001)HDU5763 Another Meaning (DP、KMP)
先给出一个母串str,再给出一个模式串pat,每一个pat有两个意思,问母串能表示几个意思。用dp解决,dp【i】表示到i位置可以表示的意思个数,首先有dp[i]=dp[i-1],设pat的长度是len1,如果以i结尾的前缀字符串的最后了len1个字符与pat匹配,那么dp[i]+=dp[i-len1];而对于每个以i结尾的位置能不能被替换,可以用kmp计算出。#include#原创 2016-07-30 10:37:24 · 2440 阅读 · 0 评论 -
poj3267 The Cow Lexicon(DP)
DP[i]代表到从第一个位置到第i个位置最少删除的个数,需要到DP[i]时,用长度小于等于i的单词优化结果。#include#include#include#include#include#include#include#include#include#include#include#define LL long long#define maxn 810using n原创 2016-07-19 17:21:46 · 2246 阅读 · 0 评论 -
SDUTOJ 2169 Sequence 山东省第二届省赛
题目描述Given an integer number sequence A of length N (1<=N<=1000), we define f(i,j)=(A[i]+A[i+1]+...+A[j])^2 (i<=j). Now you can split the sequence into exactly M (1<=M<= N) succesive parts, and the c原创 2016-05-05 19:01:02 · 2086 阅读 · 0 评论 -
HDU 1029 Ignatius and the Princess IV
题意:给你一列数(一共n个,n是奇数),其中有一个特殊的数,它会出现至少n/2次,问你这个数是什么;两种做法。最多999999个数,我首先想到的是离散化+hash,然后O(n)跑一遍,计数就行了;#include#include#include#include#include#include#define LL long longusing namespace原创 2016-05-05 12:33:20 · 2029 阅读 · 0 评论 -
动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
1、先科普下最长公共子序列 & 最长公共子串的区别:找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。而最长公共子序列则并不要求连续。2、最长公共子串其实这是一个序贯决策问题,可以用动态规划来求解。我们采用一个二维矩阵来记录中间的结果。这个二维矩阵怎么构造呢?直接举个例子吧:"bab"和"caba"(当然我们现在一眼就可以看出来最长公共子串是"ba"或"转载 2016-05-15 16:32:41 · 2679 阅读 · 0 评论 -
Problem 2177 ytaaa制造炸药
题目链接http://acm.fzu.edu.cn/problem.php?pid=2177 Problem DescriptionYtaaa作为一名特工执行了无数困难的任务,这一次ytaaa收到命令,需要炸毁敌人的一个工厂,为此ytaaa需要制造一批炸弹以供使用。 Ytaaa使用的这种新型炸弹由若干个炸药组成,每个炸药都有它的威力值,而炸弹的威力值为组成这个炸弹的所有炸药原创 2015-08-22 17:37:04 · 2189 阅读 · 0 评论 -
Clique in the Divisibility Graph(dp递推的应用) (上升子序列)
Clique in the Divisibility GraphDescriptionAs you must know, the maximum clique problem in an arbitrary graph is NP-hard. Nevertheless, for some graphs of specific kinds it can be solved eff原创 2015-08-03 10:31:09 · 2093 阅读 · 0 评论 -
Codeforces 520D. Cubes 状态模拟+贪心
Codeforces 520DDescriptionOnce Vasya and Petya assembled a figure of m cubes, each of them is associated with a number between 0 and m - 1 (inclusive, each number appeared exactly once原创 2015-08-03 19:55:18 · 2530 阅读 · 0 评论 -
poj3254 状压DP
/*真值表:a为状态(放牛为1,不放牛为0);b为场地状态(1为可以放,0为不能放) a b F 0 0 1 //不放牛 场地也不允许放 没问题真值为1 0 1 1 //不放牛 场地可以放 没问题 1 0 0 //放牛 但场地不能放 错误 真值为0 1 1 1 //放牛 场地可以放原创 2016-01-27 11:19:04 · 2940 阅读 · 0 评论 -
C.Mahmoud and a Message Codeforces Round #396 (Div. 2)(DP)
题意就不说了,我们设一个dp数组,dp[i]表示长度为i的前缀有多少种符合条件的分割方法,dp[0]设置为1。那么dp[i]=dp[i-1]+dp[i-2]+...+dp[i-j],j是当前第i个字符和第i-j+1个字符之间所包含字符对应的限制数组(题目中的ai)的最小值。所以在计算的时候,要不断更新j 的值保证符合条件。O(n^2)的时间复杂度算出dp[n]就是最多方案数。最长子串在原创 2017-02-13 11:23:20 · 2247 阅读 · 0 评论