随笔分类 -  动态规划

摘要:Acw 5046 思路 dp,dpi 表示前i种药且吃第i种药使智商达到ri的方案,根据题意可知 dpi=dpj,(rj[li,ri1])先将各区间按右端点排序, 求j的区间可用二分. 代码 //9.24 int n,m,k; int 阅读全文
posted @ 2023-09-24 16:55 Liang2003 阅读(7) 评论(0) 推荐(0) 编辑
摘要:ABC 320 F 题意 汽车从0开始出发,最终到达Xn再返程回到0,一开始有汽油H升,每公里耗油一升,在点Xi有加油站,每个加油站只可以加油一次,并且一次就加Wi升,花费Pi,且最大油量有限制H。问最小花费 思路 它的数据范围\(n 阅读全文
posted @ 2023-09-19 17:53 Liang2003 阅读(24) 评论(0) 推荐(0) 编辑
摘要:波动数列 题意 一个数列有以下性质:ci=ci1+aci=ci1b,i[2,n]. 求一个长度为n,总和为s的数列有多少个。 思路 显然 在位置pos[2,n],假设cpos=cpos1+x,则这个值x对整个数组的贡献为$(n-pos+ 阅读全文
posted @ 2023-03-26 19:12 Liang2003 阅读(15) 评论(0) 推荐(0) 编辑
摘要:F 连通性状压dp 思路 看了dls的讲解后才明白一点点。 状态dp[i][j][k]表示到表示到i列,删除了j条边,点i和n-1+i是否联通,对于下一列点, 若当前i和n-1+i连通,则多出来的三条边连任意两条,使得下一列点i+1和n+i连通,否则下一列点不连通。 若当前点i和n-1+i不连通 阅读全文
posted @ 2023-03-26 12:15 Liang2003 阅读(17) 评论(0) 推荐(0) 编辑
摘要:D 题意 给一个01串,交换两个数需要花费1012,删除某个数需要花费1012+1,问最少花费多少使得串单调不降 思路 线性dp,f[i][0]表示前i位构建的串结尾为0,单调不降的花费,f[i][1]同理,f[i][2]表示前i位构建的串结尾1的个数多于1的花费。 阅读全文
posted @ 2023-03-24 15:13 Liang2003 阅读(70) 评论(0) 推荐(0) 编辑
摘要:AtCoder Beginner Contest 243 F 题意 n种彩票,每种彩票i中奖概率为pi ,求抽k次后恰好m种彩票中奖的概率(简化的概率,题目中的概率还要用个逆元) 思路 超几何分布,设抽k次后每种彩票i中奖个数为ci ,则概率为 $P=C_k^{c_1}*p_1^{c_1 阅读全文
posted @ 2023-03-20 23:13 Liang2003 阅读(16) 评论(0) 推荐(0) 编辑
摘要:经典dp之字符串最小编辑距离 模板题 给定两个串a,b,然后有3个操作:增加任意一个字母,删除任意一个字母,改变某个字母,然后问将a变成b要多少次操作 这位大佬已经讲得很详细了 f[i][j]=min(f[i][j],f[i][j1]+1) 这里转移是本来i位就匹配了j-1位,现在多了j,就要 阅读全文
posted @ 2023-03-06 12:27 Liang2003 阅读(27) 评论(0) 推荐(0) 编辑
摘要:HDU 4507 (数位dp) 题意 一个数满足以下三个条件之一,则被认为与7有关。 1、整数中某一位是7; 2、整数的每一位加起来的和是7的整数倍; 3、这个整数是7的整数倍; 求区间[L,R] 内与7无关的数的平方和。 思路 以往的数位dp都是求个数,这次是求平方和。 怎么想到当前位与下一位的关 阅读全文
posted @ 2023-02-13 16:22 Liang2003 阅读(19) 评论(0) 推荐(0) 编辑
摘要:HDU 3709(数位dp) 题意 求区间[L,R] 内满足以下性质的数:选定该数的一个位置,左右两边的力矩相等,如4139 ,选取'3'这位,左边 4×2+1×1 = 9×1. 思路 一开始想着枚举每个点来做,考虑正确性:对于同一个数,若它存在某个位置pos使得它满足性质,则将这个位置左移,则左值 阅读全文
posted @ 2023-02-13 11:40 Liang2003 阅读(12) 评论(0) 推荐(0) 编辑
摘要:HDU 4389 (数位dp) 题意 求一个区间内[L,R] 内 有多少个 数满足:它的数位和能整除它本身。 思路 按照一般数位dp的套路,多出来的参数无非就是数位和以及这个数本身,但如果直接这样做会发现一个问题:每增加一位,数位和就会发生变化,所以还要添加一个参数mod作为最终的数位和,在外层枚举 阅读全文
posted @ 2023-02-12 10:25 Liang2003 阅读(13) 评论(0) 推荐(0) 编辑
摘要:# AtCoder Beginner Contest 281 D 题意 从一个大小为N的数组中选择K个数,使得这K个数的和是D的最大倍数。 题解 有数据范围1<=K<=N<=100,D<=100可知,这是个简单dp. nt n,m,K,D; int f[110][110]; int a[110]; 阅读全文
posted @ 2023-02-10 09:43 Liang2003 阅读(21) 评论(0) 推荐(0) 编辑

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