随笔分类 - 各种DP
摘要:传送门 这是一个模板,如果明白插头 $dp$ 的原理,大力分类讨论就完事了 注意一些细节,比如统计答案时不一定是在 $n,m$ ,因为 $n,m$ 可能不能放 自认为自己的代码比较好看...
阅读全文
摘要:传送门 第一道插头 $dp$ 由于讲不清楚所以假装各位早就会插头 $dp$ 了 首先要的是一个闭合回路,所以可以用括号表示法表示状态,然后大力分类讨论 $1.$ 没有右插头和下插头 那么我们可以啥也不干,或者加一个右插头和下插头 $2.$ 只有下插头没有右插头 那么我们可以要把下插头继续延伸,可以向
阅读全文
摘要:传送门 $dp$ 设 $f[i][j][k]$ 表示初始为 $k$ 时,能否得到 $[i,j]$ 这一段子串 设 $pd[i][j][k]$ 表示长度为二的字符串 $ij$ 能否由 $k$ 得到 然后枚举左右区间转移:有 $f[i][j][k]=[f[i][p][x]=1]\ and\ [f[p+1
阅读全文
摘要:传送门 推推式子,对于原数列 $a[i],a[j]$ 如果要保留它们,那么它们之间的数就要改成单调上升 显然能改成单调上升的条件是 $a[i]<a[j]$ 并且 $a[j]-a[i]>=j-i$ ,也就是 $a[j]-j>=a[i]-i$ 所以设 $b[i]=a[i]-i$,那么对于第一问就只要求
阅读全文
摘要:传送门 注意题目要求的字典序最小是指下标最小 容易想到 $dp$,但是发现正着做不好搞,考虑反过来搞 原本正着做是求最长上升子序列,反过来就变成求最长下降子序列 然后我们就可以求出以每个位置为起点的上升子序列的最大长度 然后直接贪心从前往后枚举即可,复杂度 $O(nm)$ 维护最长下降子序列我是用树
阅读全文
摘要:传送门 第一个问题直接二分答案 然后第二个问题直接在二分出的答案下跑一遍 $dp$,设 $f[i][j]$ 表示当前已经切了 $i$ 次考虑完前 $j$ 个位置并且强制切 $j,j+1$ 时的方案数 那么有转移 $f[i][j]=\sum_{k=L}^{j-1}f[i-1][k]$,发现随着 $j$
阅读全文
摘要:传送门 怎么好像没什么人写 $dp$ ...? 设 $f[i][j][k][0/1]$ 表示当前处理完前 $1$ 到 $i$ 的数,上一位开始的顺子有 $j$ 个,当前位开始的顺子有 $k$ 个,是否已经有雀头,的情况下能不能胡 因为连续三个顺子其实等价于三个刻字,所以我们只要考虑顺子小于 $3$
阅读全文
摘要:传送门 一眼 Burnside $dp$ 首先置换内部有独立的循环,置换的循环节长度为那些独立循环的 $lcm$ 考虑某个循环节长度 $L$ 怎么得到,显然把 $L$ 质因数分解,$\prod_{i=1}^{m}p_i^{k_i}$ 那么最优情况下独立循环的循环节为 $p_i^{k_i}$,好像挺显
阅读全文
摘要:传送门 考虑 $dp$,设 $f[i][j][k]$ 表示考虑了前 $i$ 种面值的钱,$Alice$ 现在有共 $j$ 元,$Bob$ 现在共有 $k$ 元时,的最少交换次数 那么 $Cynthia$ 的状态可以由总和减去 $Alice$ 和 $Bob$ 的状态得到 然后枚举每一种钱,枚举初末此种
阅读全文
摘要:传送门 看一眼感觉不太可做,推推性质 发现因为回文串去掉左右还是回文的,所以为了构成回文添加一个字符其实等价于删除另一边对应的字符 那么删除字符的代价就直接和添加字符的代价取最小值 然后考虑 $dp$,设 $f[l][r]$ 表示当前 $[l,r]$ 的区间内删除若干字符后成为回文串的最小代价,因为
阅读全文
摘要:传送门 一眼完全背包统计方案数,有啥好说的...
阅读全文
摘要:传送门 显然 $dp$,首先设 $f[i][j]$ 表示当前考虑到第 $i$ 个电线杆,高度为 $j$ 时的最小代价 那么有转移 $f[i][j]=f[i-1][k]+cost+C(j-k)$,其中 $j>=k$,$cost$ 为把电线杆 $i$ 增高到 $j$ 的代价,$i,j$ 固定时为常数 对
阅读全文
摘要:传送门 显然的 $dp$,设 $f[i][j]$ 表示做完第 $i$ 题,此月做的题的区间为 $[j,i]$ 需要的最少月数 每个月记得分成还钱并写新题,和只还钱分类讨论,不要搞成每个月强制做一题 那么 $f[i][i+1]$ 就表示把 $i$ 题做完并还完钱需要的最少月数,注意一下边界什么的就好了
阅读全文
摘要:传送门 考虑 $dp$ ,发现之前的 $-1$ 可能会产生贡献不好处理 贪心一下发现每个位置填的数必须单调不减,所以就不用考虑之前填的数 设 $f[i][j]$ 表示当前考虑到第 $i$ 个位置,填的数为 $j$ 时的最小代价 那么有 $f[i][j]=f[pre][k]+val[i][j],k<=
阅读全文
摘要:A. There Are Two Types Of Burgers 题意: 给一些面包,鸡肉,牛肉,你可以做成鸡肉汉堡或者牛肉汉堡并卖掉 一个鸡肉汉堡需要两个面包和一个鸡肉,牛肉汉堡需要两个面包和一个牛肉 求能得到的最多的钱 直接贪心,哪个比较贵就选哪个做,剩下的材料再做另一个 #include<i
阅读全文
摘要:传送门 发现保持自信和做其他事情互不干扰,可以直接做一次 $dp$ 求出最多能空出几天来怼大佬 然后就变成给你若干天,是否能怼死大佬,考虑求出所有的 天数和输出的嘲讽值集合,因为天数不多,嘲讽值增长很快 所以直接 $BFS$ + $map$ 去重就行了 不怼大佬或者只怼一次的情况容易计算,现在问题是
阅读全文
摘要:传送门 显然考虑 $dp$ ,发现从右往左和从左往右是一样的,所以只考虑一边就行 发现对于切的左右端点,选择的 $s0$ 一定要为左右端点的贝壳大小,不然这个端点不产生贡献还不如分开来单个贡献 所以设 $f[i]$ 表示当前把 $1$ 到 $i$ 的都切了,产生的最大贡献,设 $c[i]$ 表示位置
阅读全文
摘要:传送门 注意到 $a,b$ 不大 考虑对每一个 $a*2^b$ 的 $b$ 分别背包 设 $f[i][j]$ 表示只考虑 $b=i$ 的物品时,容量为 $j= \sum a$ 的最大价值 这个就是普通的 $01$ 背包 考虑把 $f[i][j]$ 之间合并起来,为了得到容量为 $W$ 时的答案,我们
阅读全文
摘要:传送门 首先可以把时间区间离散化 然后求出 $cnt[l][r]$ 表示完全在时间 $[l,r]$ 之内的活动数量 设 $f[i][j]$ 表示当前考虑到时间 $i$,第一个会场活动数量为 $j$ 时,另一个会场的最大活动数量 这个转移直接枚举上一个时间分界线 $k$, $f[i][j]=max(f
阅读全文
摘要:传送门 设 $f[i]$ 表示题目要求的 $p$ 那么有 $f[i]=max(f[j]+\sqrt {\left | i-j \right |})$,考虑去掉绝对值 $f[i]=max(a[j]+\sqrt {i-j}),j<=i$,$f[i]=max(a[j]+\sqrt {j-i}),i<j$
阅读全文