Processing math: 100%

随笔分类 -  各种DP

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

点击右上角即可分享
微信分享提示