随笔分类 - --------序列形dp
摘要:题目看这里 一个非常好的逆向思维题(都是套路233) 如果直接做发现其实可以做,但是数据范围太大不能过了,具体做法参考这里 开始正文: 首先,我们设f[i,j]表示" role="presentation">f[i,j]表示f[i,...
阅读全文
摘要:题目看这里想到了NOIP普及组当年那道题做法非常显然,O(n^2)枚举矩形的上下边界,让后用一个dp+前缀和就搞定了f[i]表示以第j列作为结尾的最大子矩形的宽,那么如果第i列在[l,r]的范围都是1,那么f[i]=f[i+1],否则f[i]=0答案就是max{(r-...
阅读全文
摘要:题目看这里一个经典的dp题,典型的错误思想就是做两遍我们考虑直接做,f[i][j][x][y]表示第一次取道i,j这个位置,第二次到了x,y这个位置考虑这个i,j和x,y分别是从哪里转移过来,就可以得到方程f[i][j][x][y]=max(f[i-1][j][x-1...
阅读全文
摘要:题目看这里一个非常好的结论题发现题目要求要严格递增而且要求要正整数,所以直接做LIS不行我们令原序列s变为s[i]-i那么如果s[i]-i是一个负数,肯定不符合题意答案加一去掉所有负数以后,就可以对s做一个LIS了,这里LIS可以是严格非降的就可以了#include#...
阅读全文
摘要:题目看这里看一看知道可以dp设f[i][s1][s2][s3][s4]表示走了i步,每个机器人分别在哪个格子里用矩阵优化但是发现状态数过于巨大,会TLE考虑设f[i][j][k]表示走了i步,从j格子走到k格子的方案数那么显然f[i]=T^i 其中T是全1矩阵减掉单位...
阅读全文
摘要:经典套路容斥题直接dp做是O(TxTyRk)的可以60分满分做法又要用到经典的容斥法我们设f[i][x][y]表示走i步,走到x,y的方案(不考虑不合法向量)设g[i][x]表示走了i步不合法的向量,走到了(x,x)的方案数二项式反演得Answer=∑(-1)^i*C...
阅读全文
摘要:给出一个长度为 m 的序列 A, 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS.dp套dp好题!我们先要考虑怎么搞一个状态出来考虑做lis的两种方法:1.设f[i]表示做到i的最长子序列长度2.设f[i]表示长度为i的上升子序列最后那个数最小是...
阅读全文
摘要:A省有一条东西向的公路经常堵车,为解决这一问题,省政府对此展开了调查。调查后得知,这条公路两侧有很多村落,每个村落里都住着很多个信仰c教的教徒,每周日都会开着自家的车沿公路到B地去“膜拜”他们的教主,这便是堵车的原因。详细调查显示:这里总共有N个村落,并且它们都在B地...
阅读全文
摘要:张辽是一个长发飘飘的非常聪明的男孩,人人都称他为“辽哥”。辽哥喜欢玩一个有趣的电脑游戏。这个游戏开始的时候有n个碉堡,每个碉堡拥有一个防御值a和一个附加值b。玩家拥有一个初始的攻击力S。如果玩家破坏了一个碉堡,则他能得到1分。每一次,辽哥会选择一个碉堡进行攻击。所有...
阅读全文
摘要:小Y:“小R你是萝莉控吗。”小R:“...” 为了避免这个尴尬的话题,小R决定给小Y做一道题。有一个长度为n的正整数数组A,满足艾> =艾+ 1,现在构造一个数组B,令的Bi = ΣA[j] (j∈[i,n])。现在,有一个N * N的网格图,左下角坐标是(1,1),...
阅读全文
摘要:如前面提到,ABC的汽车工厂有N个工人,他们在一个传送带上生产汽车,工人从左到右排列,编号依次为1到N,采用流水线模式,每个人负责自己的一部分工作。生产一台汽车需要从1号工人开始,当1号完成他的工作后,2号就会开始工作,然后是3号,最后当N号工人完成他的工作后,整个汽...
阅读全文
摘要:顺序和逆序读起来完全一样的串叫做回文串。比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同)。 输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串。PAM模(m...
阅读全文
摘要:题目传送门四边形不等式第一题,口胡一下我们原来的方程式:f[i][j]=sum[i][j]+max(f[i][k]+f[k+1][j]){i#include#include#define N 2010using namespace std;int n,m,a[N],s...
阅读全文
摘要:维护一个序列,使它可以进行下面两种操作:1.在末尾添加一个数字x2.将整个序列变成第x次操作后的样子在每次操作后,输出当前序列的最长上升子序列的长度序列初始时为空嗯,可持久化线段树的裸题额这可是noip提高组难度的题,我们发现所有操作可以变成一棵树(离线做法老套路了)...
阅读全文
摘要:相信大家都在长训班学过树塔问题,题目很简单求最大化一个三角形数塔从上往下走的路径和。走的规则是:(i,j)号点只能走向(i+1,j)或者(i+1,j+1)。如下图是一个数塔,映射到该数塔上行走的规则为:从左上角的点开始,向下走或向右下走直到最底层结束。 1 3 8 ...
阅读全文
摘要:给你序列A和B,求出他们LCS的方案数,|A|,|B|#include#include#define M 1000000007using namespace std;inline void ad(int& x,long long y){ x=(x+y+M)%M; }int f[5010][5010]...
阅读全文
摘要:相信大家都在长训班学过树塔问题,题目很简单求最大化一个三角形数塔从上往下走的路径和。走的规则是:(i,j)号点只能走向(i+1,j)或者(i+1,j+1)。如下图是一个数塔,映射到该数塔上行走的规则为:从左上角的点开始,向下走或向右下走直到最底层结束。 1...
阅读全文
摘要:给你序列A和B,求出他们LCS的方案数,|A|,|B|#include#include#define M 1000000007using namespace std;inline void ad(int& x,long long y){ x=(x+y+M)%M; }i...
阅读全文
摘要:对于一个1->n的排列 ,定义A中的一个位置i是好的,当且仅当Ai-1>Ai 或者Ai+1>Ai。对于一个排列A,假如有不少于k个位置是好的,那么称A是一个好的排列。现在有q个询问,每个询问给定n,k,问有多少排列是好的。答案对10^9+7取模。显然是计数类dp,我们设f[i][j]表示对于一个1-...
阅读全文
摘要:有两个长度为n的排列A和B,定义排列的价值f(A,B)为所有满足A[i]>B[i]的位置i的数量。现给出n,A,B和S,其中A和B中有一些位置的数未知,问有多少种可能的填数的方案使得f(A,B)=S保证不存在一个位置i满足A[i]=0且B[i]=0十分有趣的题目,是个神奇的组合数学+dp我们先将问题...
阅读全文