奇妙的 dp 合集

Sue 的小球

传送门

后效性 dp,当前 dp 的时候算上对后面状态的影响。

加上关路灯,或许算一类我没见过的dp模型。

想歪了想怎么计时间想了一会,然后发现是不用计时间的()

细节上,由于按坐标 dp 肯定不行,就对起点没有球的情况暴力分讨了一下往左走还是往右走,加上开始一段的贡献就行了。

不开 long long 见祖宗这件事或许可以感性理解为为了得到最优解会绕很多很多圈?

数字序列

传送门

神仙题。

第一问很好做,最长上升转最长不下降,然后第二问接着拿最长上升做,就寄了。

首先很容易发现确定不修改的这些点可以将序列划分成若干互不影响的段,然后就是结合 LIS 一定没有数的值位于 [ a l , a r ] [a_l,a_r] [al,ar] 之间的性质,推出那个神秘结论 (反正我自己推不出来

自己想和企图写代码的时候都被多个 LIS 绕晕了,最后发现是复杂度神秘的暴力匹配。苯人才知道 nlogn 求 LIS 那个数组还有这种奇妙性质()

寿司晚宴

传送门

根据 n n n 的大于 n \sqrt n n 的素因子最多只有一个,把质因子减少到八个来状压。

dp 的时候把大质因子相同的数放在一起, f 1 [ i ] [ j ] f1[i][j] f1[i][j] 表示大质因子只放入第一个集合或不放的方案, f 2 [ i ] [ j ] f2[i][j] f2[i][j] 表示只放入第二个集合或不放的方案,不放的情况会重,所以要减去一个。

一双木棋 chess

传送门

第一次听说的轮廓线 dp,根据题面要求,每一行放不放的交界线一定构成阶梯状,用 0 0 0 表示横 1 1 1 表示竖可以在允许复杂度内表示出轮廓线来转移,非常巧妙。

然后由于没手玩一直搞不清 x x x y y y 的变化卡了 114514 年/fn

对 dp 的转移顺序表示迷惑,留坑代填()

Mathematics Curriculum

传送门

非常神秘的类似笛卡尔树的思想和非常神秘的常数。

f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k] 表示长度为 i i i,恰有 j j j 个数满足包含此数的区间的不同最大值有 k k k 个的排列数。考虑在位置 p o s pos pos 加入第 i i i 个数:前一半有 p o s − 1 个 pos-1个 pos1 数,由于 i i i 的存在,右一半区间对答案没有贡献,只有 i i i 贡献了 1 1 1 种最大值,后一半同理。枚举前一半满足条件的个数 x x x,答案即 ∑ x = 0 j f [ p o s − 1 ] [ x ] [ k − 1 ] × f [ i − p o s ] [ j − x ] [ k − 1 ] \sum\limits_{x=0}^j f[pos-1][x][k-1]\times f[i-pos][j-x][k-1] x=0jf[pos1][x][k1]×f[ipos][jx][k1],而前后划分的方案数为 C i − 1 p o s − 1 C_{i-1}^{pos-1} Ci1pos1,则有:
f [ i ] [ j ] [ k ] = ∑ p o s = 1 i C i − 1 p o s − 1 ∑ x = 0 j f [ p o s − 1 ] [ x ] [ k − 1 ] × f [ i − p o s ] [ j − x ] [ k − 1 ] f[i][j][k]=\sum\limits_{pos=1}^i C_{i-1}^{pos-1}\sum\limits_{x=0}^j f[pos-1][x][k-1]\times f[i-pos][j-x][k-1] f[i][j][k]=pos=1iCi1pos1x=0jf[pos1][x][k1]×f[ipos][jx][k1]

然后就挂了。因为有反正我不看题解就死活调不出来的一堆细节:

  • 根据定义,唯有 j + k − 1 ≤ i j+k-1\le i j+k1i 的情况下 f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k] 有意义,但没有意义的也参与转移:当 j ≠ 0 j\ne0 j=0 k ∉ [ 1 , i ] k\notin[1,i] k/[1,i] 时答案是 i ! i! i!(话说这怎么理性理解一下啊qwq)
  • k = 1 k=1 k=1 时后一半是 j − x − 1 j-x-1 jx1
  • p o s = 1 pos=1 pos=1 p o s = i pos=i pos=i 的情况不能分前后两半算
  • O ( n 5 ) O(n^5) O(n5) 不能跑满,由于 i − p o s i-pos ipos p o s − 1 pos-1 pos1 处答案是一样的,可以利用这个砍一半常数
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值