dp
pocket_legend
这个作者很懒,什么都没留下…
展开
-
bzoj 3864 Hero meet devil [dp套dp]
Description: 给一个长为nnn的串sss(n≤15n≤15n\leq15),求lcs=[0,n]lcs=[0,n]lcs=[0,n]长度为mmm的串的个数Solution: 考虑求lcslcslcs的过程,dp[i][j]=dp[i−1][j−1]+1(a[i]==b[j])dp[i][j]=dp[i−1][j−1]+1(a[i]==b[j])dp[i][j]=dp[i-1...原创 2018-03-07 22:46:18 · 194 阅读 · 0 评论 -
bzoj2655 calc [拉格朗日插值]
Description: 一个序列a1,...,ana1,...,ana_1,...,a_n是合法的,当且仅当: 长度为给定的nnn。 a1,...,ana1,...,ana_1,...,a_n都是[1,A][1,A][1,A]中的整数。 a1,...,ana1,...,ana_1,...,a_n互不相等。 一个序列的值定义为它里面所有数的乘积,即a1a2...ana1a2...ana_...原创 2018-03-27 22:26:03 · 178 阅读 · 0 评论 -
bzoj2863 愤怒的元首 [dp+容斥原理]
Description: 求nnn个点构成dagdagdag数量。Solution: 考虑g[i]g[i]g[i]表示当前iii个点构成dagdagdag数量。由于dagdagdag有出度为000的点,删掉这些点仍然是一个dag。所以枚举出度为000的点的数量,这样可以根据不同的特征计数。那么得出g[i]=∑ii=1g[i−j]∗2j∗(i−j)∗C(i,j)g[i]=∑i=1ig[i...原创 2018-03-28 12:56:45 · 447 阅读 · 1 评论 -
[Heoi 2013] bzoj3167 SAO [树形dp]
Description: 一棵树,每条边上有一个不等号,求每个点填一个排列的数量。Solution: dp[u][i]dp[u][i]dp[u][i]表示第uuu个点在子树中排名为iii的方案数,那么枚举新加入的点有多少个比uuu小。 对于u<vu<vudp[u][j+k]+=dp[u][j]∗C(k+j−1,k)∗C(sz[u]+sz[v]−j−k,sz[v]−k)∗∑...原创 2018-04-16 16:18:29 · 166 阅读 · 0 评论 -
[Poi 2012] bzoj2794 Cloakroom [dp]
Description: 有nnn件物品,每件物品有三个属性a[i],b[i],c[i](a[i]<b[i])a[i],b[i],c[i](a[i]<b[i])a[i], b[i], c[i] (a[i]qqq个询问,每个询问由非负整数m,k,sm,k,sm, k, s组成,问是否能够选出某些物品使得: 111. 对于每个选的物品iii,满足a[i]<=ma[i]<=m...原创 2018-04-16 19:19:39 · 184 阅读 · 0 评论 -
CSA Expected Max [dp+概率期望]
Description: mmm个操作,nnn个位置,每个操作会随机选一个位置加上[0,c][0,c][0,c]中的随机值,问期望最大值。Soution: f[i][S][j]f[i][S][j]f[i][S][j]表示第iii个人操作集合为SSS,最大值为jjj的概率,dp[i][S][j]dp[i][S][j]dp[i][S][j]为前iii个人操作集合为SSS,最大值为jjj的概...原创 2018-04-04 13:09:31 · 198 阅读 · 0 评论 -
[NOI 2009] bzoj1566 管道取珠 [dp]
Description: 有两种珠子,有两个管道,每个管道里有一些珠子,每次可以从上面或下面取珠子构成序列,问构成相同序列的操作对数。Solution: 考虑dp[len][i][j]dp[len][i][j]dp[len][i][j]表示当前取了lenlenlen个珠子,第一个操作从上面取了iii个,第二个操作从上面取了jjj个且构成序列相同的方案数,dpdpdp即可。 这类题的套...原创 2018-04-04 20:12:24 · 173 阅读 · 0 评论 -
[Cqoi 2013] bzoj3106 棋盘游戏 [博弈论]
Description: 两个人移动棋子,第一个人每次可以走一格,第二个人每次可以走一格或两格。希望最大化吃掉对方的时间。Solution: 对抗搜索。 设dp[o][s][a][b][c][d]dp[o][s][a][b][c][d]dp[o][s][a][b][c][d]表示当前是ooo走,走了sss步,分别的坐标。 然后先手肯定会被后手吃掉,那么先手尽量希望拖延时间,对答案取...原创 2018-04-17 19:43:10 · 231 阅读 · 0 评论 -
bzoj3329 Xorequ [数位dp+矩阵乘法]
Description: 看题去。Solution: 我们可以转化成xxx xorxorxor 2x=3x=x+2x2x=3x=x+2x2x=3x=x+2x 那么也就意味着不能消去任何一个111,所以要求x没有相邻两位有1。 第一问数位dpdpdp即可。 第二问由于是222的幂所以每位都有,考虑dpidpidp_i表示到第iii位且合法的方案数,考虑这位填000或111,得出dp...原创 2018-04-12 20:35:36 · 145 阅读 · 0 评论 -
bzoj3209 花神的数论题 [数位dp]
Description: 求∏countbit(i)∏countbit(i)\prod{countbit(i)}Solution: 枚举111的个数,数位dpdpdp即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int P = 1e7 + 7;int bit...原创 2018-04-12 21:50:29 · 157 阅读 · 0 评论 -
[NOI 2015] bzoj4197 寿司晚宴 [dp]
Description: nnn个数,挑出一些分成两组,可以为空,问两组中所有数都与另一组互质。Solution: 关于质因子分类,只考虑根号下的质因子,只有888个,那么装压一下,对于大于根号的分组考虑,单独dpdpdp即可。#include <cstdio>#include <cstring>#include <algorithm>...原创 2018-04-18 20:02:34 · 155 阅读 · 0 评论 -
[HNOI 2007] bzoj1187 神奇游乐园 [dp]
Description: 求最大权哈密尔顿回路。Solution: 插头dpdpdp裸题。 预处理出所有轮廓线的状态,令dp[i][j][k]dp[i][j][k]dp[i][j][k]表示第iii行第jjj列轮廓线状态为kkk的最大权值。先预处理出第一行的dpdpdp值,每次做到末尾时计算下一行第一格。 用三进制表示状态,04表示空,04表示空,04表示空,1表示左插头,表示左插...原创 2018-04-23 19:16:52 · 239 阅读 · 0 评论 -
bzoj 2121 字符串游戏 [dp]
Description: 给出一些串和一个母串,每次可以从母串中删除一个给出串并拼接,问最终最短多少。Solution: 比较难的dpdpdp。 最终目的计算o[i][j]o[i][j]o[i][j]表示i−>ji−>ji->j是否可以完全消去,然后dpdpdp一下就行了。 设一个dp[i][j][k][l]dp[i][j][k][l]dp[i][j][k][l]表示i...原创 2018-04-19 20:28:24 · 148 阅读 · 0 评论 -
SRM601
500pts: 首先有个暴力dp,dp[i][a][b]dp,dp[i][a][b]dp,dp[i][a][b],到了第i个数,异或和分别为a,ba,ba,b。 考虑优化,我们发现第二个比第一个大肯定是在某一位变化,那么前面的所有位都相同,后面无需考虑。 dp[i][a][b]dp[i][a][b]dp[i][a][b]表示到了第iii个数,两个集合异或和为aaa,第一个集合不同位是bbb。...原创 2018-04-15 09:28:24 · 151 阅读 · 0 评论 -
SRM600
500pts: 枚举哪些列相同,然后做一个dpdpdp。 cost[i][j]cost[i][j]cost[i][j]表示对称的i行,有jjj个回文串。jjj只可能时0,1,2,0,1,2,0,1,2,这里贪心一下即可。然后做一个背包dpdpdp。 代码暂时找不到了。 900pts: 考虑交点个数,对于两条直线 y=ax+by=ax+by=ax+b y=cx+dy=cx+dy=cx+...原创 2018-04-14 11:23:30 · 181 阅读 · 0 评论 -
bzoj3591 最长上升子序列 [状压dp]
Description: 给出1 n1 n1~n的一个排列的一个最长上升子序列,求原排列可能的种类数。Solution: 感觉和bzoj3864bzoj3864bzoj3864很像,可是由于平常写lislislis是用树状数组,并没有想到怎么装压lislislis。考虑另一种求lislislis的方法,aiaia_i表示长度为iii的lislislis结尾最小数...原创 2018-03-26 20:37:42 · 412 阅读 · 0 评论 -
AGC 021D Reversed LCS [dp]
Descripion: 给定一个字符串,可以更改其中的kkk个字符,要求最大化该字符串与其翻转字符串的LCSLCSLCS长度,求该长度。Solution: dpi,j,kdpi,j,kdp_{i,j,k}表示区间[i,j][i,j][i,j]修改了kkk个字符最长的LCSLCSLCS。很明显如果没有修改最长的LCSLCSLCS为最长回文子序列,那么每次考虑两端字符是否匹配或者修改或者不...原创 2018-03-08 17:57:32 · 192 阅读 · 0 评论 -
poj 3557 Map Generator [概率dp]
Description: nnn个点,每条边联通的概率为ppp,问是联通图的概率。Solution: 考虑容斥,计算不连通的概率。dp[i]=∑i−1j=1dp[j]∗C(i−1,j−1)∗(1−p)j∗(i−j)dp[i]=∑j=1i−1dp[j]∗C(i−1,j−1)∗(1−p)j∗(i−j)dp[i]=\sum_{j=1}^{i-1}{dp[j]*C(i-1,j-1)*(1-p)...原创 2018-03-08 22:15:54 · 180 阅读 · 0 评论 -
Codeforces 38H The Great Marathon [dp]
Description: nnn个人跑马拉松,起点固定重点随意,必须走最短路。按时间为第一关键字编号为第二关键字排名,分金银铜牌。金牌数量在[g1,g2][g1,g2][g1,g2]之间,银牌数在[s1,s2][s1,s2][s1,s2]之间。问有多少种方案。Solution: 考虑枚举金牌线和铜牌线,金牌线肯定出在每个人最快的路线,铜牌线出在最慢的路线。然后dp[i][j][k]dp...原创 2018-03-15 15:59:21 · 284 阅读 · 0 评论 -
bzoj4182 shopping [树形dp+点分治]
Description: 树上每个点有容量,花费,价值。你有mmm元钱,问选出一个连通块的最大价值。Solution: 问题在于必须选出一个连通快。每次树形dp时改动一下,递归子树时去掉一份下一个节点的花费,强制选择下一个节点一次,这样就是选择一个联通块了,每次背包二进制分解一下,再用点分治优化即可。#include <cstdio>#include <...原创 2018-03-16 08:00:50 · 293 阅读 · 0 评论 -
ARC 066E Addition and Subtraction Hard [dp]
Description: 给一个序列和符号,求添加括号使和最大。Solution: 由于括号最多两层,并且只可能在符号前面添加括号,所以设计dp[i][0/1/2]dp[i][0/1/2]dp[i][0/1/2]表示当前前面剩余几个括号未匹配的最大值,转移考虑加不加括号以及正负号即可。#include <cstdio>#include <cstring>...原创 2018-03-09 22:33:54 · 258 阅读 · 0 评论 -
[NEERC Moscow] GYM 100792H Hashing [dp]
Description: 给一个16进制数列,选出一个子序列,求子序列每项异或在子序列中下标的和。Solution: 发现数列最大255,那么只用考虑后8位。dp[i][j]表示必须选第i个数,并且当前下标后8位为j的最大和。由于后八位确定,所以我们自然希望当前下标尽量大。求出最大下标然后转移即可。#include <cstdio>#include <cst...原创 2018-03-10 17:21:05 · 193 阅读 · 0 评论 -
51nod1705 七星剑 [期望dp]
Description: 七颗星,第iii课星用第j个宝石有p[i][j]p[i][j]p[i][j]的概率成功,失败将为g[i][j]g[i][j]g[i][j]颗星。第jjj个宝石化费c[j]c[j]c[j],求最小期望化费。Solution: 由于期望的线性性质,我们可以得出dp方程,转化一下即可得出 dp[i]=min(dp[i],((dp[i−1]+c[j])∗p[i][j...原创 2018-03-17 07:34:12 · 159 阅读 · 0 评论 -
[JLoi 2016] bzoj4557 侦查守卫 [树形dp]
Description: 一棵树中有些黑点,在每个点上放守卫要花一定代价,守卫侦查范围为d,求覆盖所有黑点最小代价。Solution: 这是一类树形dpdpdp。 设up[u][i]up[u][i]up[u][i]为uuu向上至少覆盖iii,down[u][i]down[u][i]down[u][i]为uuu最多只有向下iii层没覆盖。然后转移看代码。#include &...原创 2018-03-13 15:20:23 · 152 阅读 · 0 评论 -
51nod1327 棋盘游戏 [dp]
Description: 有一个NNN行MMM列的棋盘,即该棋盘被分为N∗MN∗MN*M格。现在向棋盘中放棋子,每个格子中最多放一个棋子,也可以一个不放。放完棋子后需要满足如下要求: 1)1)1)对于第i行来说,其从左往右的前left[i]left[i]left[i] 个格子(即最左侧的left[i]left[i]left[i] 个连续的格子)中恰好一共有111个棋子; 2)2)2)对于第i...原创 2018-03-29 23:17:50 · 237 阅读 · 0 评论 -
bzoj4987 Tree [树形背包]
Description: 从前有棵树。 找出KKK个点A1,A2,…,AkA1,A2,…,AkA_1,A_2,…,A_k。 使得∑dis(Ai,Ai+1),(1<=i<=K−1)∑dis(Ai,Ai+1),(1<=i<=K−1)∑dis(A_i,A_{i+1}),(1dpdpdp。设dp[i][j][0/1/2]dp[i][j][0/1/2]dp[i][j][0/1/...原创 2018-03-20 22:42:21 · 389 阅读 · 0 评论 -
bzoj4361 isn [容斥原理+dp]
Description: 如果当前序列不是不降序列,那么删除一个数,直到不降为止。问方案数。Solution: gigig_i表示长度为i的不降子序列的数量,这个通过dp计算。不考虑重复和不合法,答案就是∑ni=1gi∗(n−i)!∑i=1ngi∗(n−i)!\sum_{i=1}^{n}{g_i*(n-i)!} 如果一个不降序列再删除,那么就是不合法了。于是我们减去,减去∑ni=2g...原创 2018-03-20 22:56:59 · 198 阅读 · 0 评论 -
AGC001E BBQ Hard [dp]
Description: 求∑ni=1∑nj=1,j!=iC(ai+aj+bi+bj,ai+aj)∑i=1n∑j=1,j!=inC(ai+aj+bi+bj,ai+aj)\sum_{i=1}^{n}\sum_{j=1,j!=i}^{n}{C(a_i+a_j+b_i+b_j, a_i+a_j)}Solution: 这个式子很像网格图中的路径方案数,等于从(−ai,−bi)(−ai,−bi)...原创 2018-03-31 11:01:43 · 232 阅读 · 0 评论 -
bzoj3162 独钓寒江雪 [树hash+dp]
Description: 求树上本质不同独立集个数。Solution: 不考虑同构是一个裸的树形dp,dp[u][0/1]dp,dp[u][0/1]dp,dp[u][0/1]表示这个选或点不选。 现在考虑同构,从重心开始dpdpdp,如果有两个重心那么中间新建一个根。 通过根的性质不难发现以一个点为根时它父亲所在的子树肯定不会跟它的其他子树同构。如果不选择重心作为根这个性质就会失去...原创 2018-04-24 18:25:29 · 220 阅读 · 0 评论