简单DP
文章平均质量分 58
Werky_blog
这个作者很懒,什么都没留下…
展开
-
埃森哲杯金马五校赛 L . K序列(dp)
链接:https://www.nowcoder.com/acm/contest/91/L来源:牛客网题目描述给一个数组 a,长度为 n,若某个子序列中的和为 K 的倍数,那么这个序列被称为“K 序列”。现在要你 对数组 a 求出最长的子序列的长度,满足这个序列是 K 序列。 输入描述:第一行为两个整数 n, K, 以空格分隔,第二行为 n 个整数,表示 a[1] ∼ a[n],1 ≤ n ≤ 10...原创 2018-04-17 19:39:04 · 206 阅读 · 0 评论 -
poj 1458 Common Subsequence(LCS模板题)
题目:点击打开链接题意:显然是一道LCSdp[i][j]表示S1序列的前i个和S2序列的前j个的最长公共序列。dp[i][j]=dp[i-1][j-1]+1 (s1[i]==s2[j])dp[i][j]=max(dp[i-1][j],dp[i][j-1]) (s1[i]!=s2[j])#include<iostream>#include<cstring>#incl...原创 2018-03-28 16:55:03 · 153 阅读 · 0 评论 -
poj 1836 Alignment(双向LIS)
题目:点击打开链接题意:和vijos合唱队形一样,还是两遍矮,中间高,不一样的是时限要求。思路:还是正反两个LIS,但要换种写法,没必要外面套一层循环。注意j==i时减一。#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int inf = 0x3f3...原创 2018-03-28 16:48:59 · 166 阅读 · 0 评论 -
wannafly 12 C (dp/01背包)
题目:点击打开链接又是一道dp,可以看成是容量为m的背包,最多放多少字符串。写法就和01背包类似了。无需填满,初始化为负无穷。dp1[i][j]:放入的第i个字符是a时,变化为j时的最大字符串数。dp2同理状态转移:dp1[j]可以由dp1[j]+1得到,也可以由dp2[j-1]+1变化得到,所以每次发生变化另一个dp都会加一。#include<bits/stdc++.h>#defi...原创 2018-03-24 21:34:28 · 158 阅读 · 0 评论 -
poj 2192 Zipper (LCS)
题目:http://poj.org/problem?id=2192可以写成一个简单的dp,dp[i][j]表示s1的前i个和s2的前j个,能够组成s3的前i+j个。abc bcd abbccdi=2,j=2时,要看ab和bc能否组成abbc以及前一状态,即ab和b能否组成abb#include<iostream>#include<cstdio>#include<...原创 2018-03-19 20:33:18 · 165 阅读 · 0 评论 -
hdu 1231 最大连续子序列
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1231思路:一个点就是,sum一旦小于0,就重新塑造子序列。#include<bits/stdc++.h>#define ll long long intusing namespace std;const int inf=0x7fffffff;int a[10005];int ma...原创 2018-03-18 22:10:30 · 116 阅读 · 0 评论 -
L2-014 列车调度(LIS+Dilworth定理)
题目:https://www.patest.cn/contests/gplt/L2-014卧槽,垃圾题真伤啊,看错题浪费4个小时。按题意a[0]才是8!用了nlogn的做法求最长上升子序列,也就是最长不上升子序列的最小覆盖度(一开始竟没看出来)#include <bits/stdc++.h>using namespace std;int ans[100005],...原创 2018-03-10 16:33:39 · 247 阅读 · 0 评论 -
poj 1664 放苹果(dfs/dp/母函数)
题目:http://poj.org/problem?id=1664Description把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。Input第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。Output对输入的每组数...原创 2018-01-08 16:01:36 · 297 阅读 · 0 评论 -
Ural 1017 楼梯问题/整数拆分(01背包/dp/母函数)
题目:https://cn.vjudge.net/problem/URAL-1017大意:建楼梯,每层逐渐减小,至少两层,相当于整数拆分,不能有相等的,求种类数。1.01背包:取上为1,没取为0,取到n的最大种类数。#include <cstdio>#include <cstring>#include <iostream>#include <algo...原创 2018-02-15 18:33:26 · 344 阅读 · 0 评论 -
vijos 1117 数的划分(整数拆分)
题目:https://vijos.org/p/1117将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5; 1,5,1; 5,1,1;问有多少种不同的分法。dp:剩下的j分i份,最大的那份为k#include<bits/stdc++.h>using namespace std;int f[10][201][...原创 2018-02-12 19:01:30 · 645 阅读 · 0 评论 -
洛谷 P2782 友好城市(LIS)
题目:https://www.luogu.org/problemnew/solution/P2782思路:对一边排序另一边求LIS。即使简单也不能不动脑子啊,大于小于都写错,实在不在学习状态。#include #include #include #include #include using namespace std;const int maxn=200005;i原创 2018-01-27 22:44:02 · 1111 阅读 · 0 评论 -
vijos 1098 合唱队形(正反两个LIS)
题目:https://www.vijos.org/p/1098思路:先递增后递减,可以一个反向LIS接一个LIS,序列长度初始化为1啊!!!错了半天。#include #include #include #include #include using namespace std;int a[105],l[105],r[105];int main() { int原创 2018-01-27 20:11:34 · 204 阅读 · 0 评论 -
Vijos 1303 导弹拦截(LIS+Dilworth定理)
题目:https://www.vijos.org/p/1303思路:第一问最长不上升子序列,第二问运用定理:一个序列中,最长不上升子序列的最小覆盖度等于序列中最长上升自序列的长度。(由于求的额外的,所以再减一)注意:LIS用的时候注意n=1的情况,别瞎输出。还有dp数组初始化全了,别漏下。#include <cstdio>#include <cstring>#inclu...原创 2018-01-25 21:15:54 · 314 阅读 · 0 评论 -
poj 2533 (LIS)
题目:http://poj.org/problem?id=2533求最长上升子序列。N^2 dp:#include #include #include using namespace std;int a[1005],dp[1005];int main() { int n,ans; while(scanf("%d",&n)!=EOF){ a原创 2018-01-24 00:20:45 · 149 阅读 · 0 评论 -
hdu 1176 免费馅饼
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1176免费馅饼Problem Description为了使问题简化,假设在接下来的一段时间里,馅饼都掉落在0-10这11个位置。开始时gameboy站在5这个位置,因此在第一秒,他只能接到4,5,6这三个位置中其中一个位置上的馅饼。问gameboy最多可能接到多少个馅饼?(假原创 2018-01-07 18:02:44 · 226 阅读 · 0 评论