线性dp
_Shmily
这个作者很懒,什么都没留下…
展开
-
2020 Multi-University Training Contest 2---- HDU--6766、Diamond Rush(dp、思维)
题目连接题面:题意:给定一个 n∗nn*nn∗n 的矩阵,每个点都有一个权值 (n2)ai,j(n^2)^{a_{i,j}}(n2)ai,j,左上角为 (1,1)(1,1)(1,1) ,右下角为 (n,n)(n,n)(n,n)。从(1,1)(1,1)(1,1) 出发,每次只能往右或者往下走。有 qqq 次查询,每次查询给出一个子矩阵 (xl,xr,yl,yr)(xl,xr,yl,yr)(xl,xr,yl,yr),问如果子矩阵中的点不能走,从 (1,1)(1,1)(1,1) 到 (n,n)(n,原创 2020-09-01 10:42:27 · 270 阅读 · 0 评论 -
CodeForces - 245H Queries for Number of Palindromes(线性dp)
题目vj链接题面:题意:给定一个字符串,每次询问[l,r][l,r][l,r]的子串中有多少个回文子串。题解:我们设dp[l][r]dp[l][r]dp[l][r]为[l,r][l,r][l,r]的回文子串的个数,那么dp[l][r]=dp[l][r−1]+dp[l+1][r]−dp[l+1][r−1]+[S(l,r)==回文串]dp[l][r]=dp[l][r-1]+dp[l+1][r]-dp[l+1][r-1]+[S(l,r)==回文串]dp[l][r]=dp[l][r−1]+dp[l+1]原创 2020-08-25 16:53:37 · 126 阅读 · 0 评论 -
2020牛客暑期多校训练营(第五场) D、Drop Voicing(最长上升子序列)
题目链接题面:题意:给定一个全排列p,可以有两种操作:(1)将倒数第二个数放到第一个。(2)将第一个数放到最后一个。对于操作(1),我们将连续的几次操作都视为一次操作。问最少进行多少次操作(1)可以将 p 变为 1...n1...n1...n。题解:我们发现若干次连续的操作(2)会让序列进行循环,即只要变为相对顺序为1...n1...n1...n然后进行操作(2)循环即可到达1...n1...n1...n我们发现若干次连续的操作(2)+ 若干次连续的操作(1)的作用其实就是将序列的任意原创 2020-08-25 09:25:46 · 88 阅读 · 0 评论 -
2020 Multi-University Training Contest 4---- HUD--6806、Equal Sentences(线性dp)
题目链接题面:题意:给定一个由 n,n≤1e5n,n\le1e5n,n≤1e5 个单词组成的句子。问与这个句子几乎相等的句子的个数。两个句子几乎相等:(1)单词数量一样多。(2)单词 x 在 A 串中出现的下标与单词 x 在B串中出现的下标相差不超过1。题解:对于任意一个与 S 几乎相等的句子 T,都能唯一对应若干个不交的交换操作swap(s[i],s[i−1])swap(s[i],s[i-1])swap(s[i],s[i−1])。同样地,任意一组不交的交换操作,也能唯一对应一个与 S原创 2020-08-25 09:22:40 · 115 阅读 · 0 评论 -
2020 Multi-University Training Contest 3---- HDU--6794、Tokitsukaze and Multiple(线性dp)
题目链接题面:题意:给定一个长度为 n 的数列 a,a 数列中的相邻的两个数可以合并,问最多可以让数列 a 中有多少个数是p的倍数。题解:我们把 a 数列中某一段相加是p的倍数的段都拿出来,这样问题转化为,给定一些线段,选出最多的不相交的线段。代码:#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#原创 2020-08-25 09:18:09 · 70 阅读 · 0 评论 -
2020 Multi-University Training Contest 2---- HDU--6774、String Distance(dp)
题目链接题面:题意:定义两个符串的距离为执行添加 / 删除操作(可以对于任意一个字符串进行操作)直到两个串相等的最小操作数。给定一个串AAA,和一个串BBB,每次询问A[l,r]A[l,r]A[l,r]与 BBB 的距离。其中len(A)≤1e5,len(B)≤20len(A)\le1e5,len(B)\le20len(A)≤1e5,len(B)≤20题解:(一)首先可以知道,两个串 SSS 和 TTT 距离dis(S,T)=len(S)+len(T)−2∗lcs(S,T)dis(S,T)原创 2020-08-25 09:01:38 · 111 阅读 · 0 评论 -
2020牛客暑期多校训练营(第三场)E、Two Matchings(思维、dp)
题目链接题面:题意:定义一个排列为 ppp 匹配,当且仅当 pi!=i and ppi=ip_i!=i\space and\space p_{p_i}=ipi!=i and ppi=i,我们可以发现p匹配中两两配对。定义两个匹配 p,qp,qp,q 不相同,对于所有的i∈[1,n],pi≠qii\in[1,n],p_i \ne q_ii∈[1,n],pi=qi给定一个数组a,定义一个p匹配的花费为 (∑i=1nabs(ai−api))/2(\原创 2020-08-25 08:58:39 · 114 阅读 · 0 评论 -
2020 年百度之星·程序设计大赛 - 初赛一 HDU-6745、Dec(线性dp)
题目链接题面:DecTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 520 Accepted Submission(s): 131Problem Description初始有 a,b 两个正整数,每次可以从中选一个大于 1 的数减 1,最后两个都会减到 1,我们想知道在过程中两个数互质的次数最多是多少。Input第一行一个正整数原创 2020-08-25 08:51:48 · 140 阅读 · 0 评论 -
P1169 [ZJOI2007]棋盘制作 (悬线法)
题目链接题面:题解:了解悬线法的使用。代码://悬线法//好久之前就看到这个东西了,但是一直没写过题目//解决给定矩阵中满足条件的最大子矩阵//用一条线(横竖貌似都行)左右移动直到不满足约束条件或者到达边界//left[i][j]代表从(i,j)能到达的最左位置//right[i][j]代表从(i,j)能到达的最右位置//up[i][j]代表从(i,j)向上扩展最长长度.#include<iostream>#include<cstdio>#include原创 2020-08-25 08:07:53 · 88 阅读 · 0 评论 -
P1439 【模板】最长公共子序列(最长上升子序列)
题目链接题面:题解:记录a序列中每个x的位置,将b序列赋值为其在a序列中的位置。然后对b序列(位置序列)求最长上升子序列。代码:#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<cmath>#include<set>#include<map>#incl原创 2020-08-25 08:06:12 · 91 阅读 · 0 评论 -
P1108 低价购买 (最长下降子序列)
题目链接题面:题解:求最长的下降子序列的长度和不同的最长下降子序列的个数。代码:#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<string>#include<cmath>#include<queue>#include<stack>原创 2020-08-25 08:06:02 · 114 阅读 · 0 评论 -
P1006 传纸条/P1004 方格取数 (DP)
一、P1006 传纸条题目链接题面:题解:等价于找两条从左上角到右下角的不相交的路线,使得和最大。我们设dp [ k ] [ i ] [ j ] k为 横坐标加纵坐标的和, i 为左边那条路径的纵坐标,j 为右边那条路径的纵坐标 。代码:#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>#includ原创 2020-08-25 08:05:33 · 122 阅读 · 0 评论 -
P2258 子矩阵(DP)
题目链接题面:题解:枚举行然后 dp 列。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int inf=0x3f3f3f3f;const int maxn=30;int n,m,r,c;int a[maxn][maxn],ha[maxn],dp[maxn][maxn];int l[maxn原创 2020-08-24 22:30:41 · 91 阅读 · 0 评论 -
ZSTU 4514: yesky wine锦鲤卡 (线性dp)
题目链接题面:4514: yesky wine锦鲤卡Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 28 Solved: 6Description懒羊羊的红酒供应系统优化完成了。懒羊羊好开心!他决定给所有ACMer和OIer包括教练一个机会,幸运者可以取得yesky wine锦鲤卡,免费供应一年的yesky wine。要取得锦鲤卡,需要通过一个游戏,谁是第一个取得游戏的胜利者,就可以拿走锦鲤卡。游戏的目标很简单,用最少的回合完成红酒瓶游戏。总共原创 2020-08-24 22:10:46 · 132 阅读 · 0 评论 -
Codeforces Round #286 (Div. 2) C. Mr. Kitayuta, the Treasure Hunter(线性dp)
题目链接题面:题意:有30001个岛屿,下标为0~30000,给n个数告诉你有n份宝藏藏在哪些岛上。你从0往下标大的方向跳,第一步跳的距离为d。如果上一步跳的距离为D,这一步就可以跳D-1或D或D+1(但是距离必须大于0)。问最多拿到多少宝藏。题解:dp [ i ] [ j ] 表示跳到第 i 个岛屿上且前一步 跳跃距离为 d + j 的最大值。因为每次只能增加1或者减少1,那么 d 往上波动不超250,往下波动不超250。接下来线性递推就可以啦。#include<iostr原创 2020-08-24 22:02:27 · 130 阅读 · 0 评论 -
POJ - 2279:Mr. Young‘s Picture Permutations(线性dp)
Mr. Young wishes to take a picture of his class. The students will stand in rows with each row no longer than the row behind it and the left ends of the rows aligned. For instance, 12 students could b...原创 2020-08-24 20:47:59 · 144 阅读 · 0 评论 -
POJ - 2127 Greatest Common Increasing Subsequence(线性dp,最长公共上升子序列)
POJ - 2127 Greatest Common Increasing SubsequenceYou are given two sequences of integer numbers. Write a program to determine their common increasing subsequence of maximal possible length.Sequence ...原创 2020-08-24 20:48:10 · 176 阅读 · 0 评论