
动态规划
文章平均质量分 68
关于OI Wiki内的动态规划例题
Σ_aphasia
不要温和的走进那个良夜
展开
-
cf1699D. Almost Triple Deletions(dp)
difficult:2300原创 2022-07-08 15:05:06 · 260 阅读 · 0 评论 -
洛谷P2515 [HAOI2010]软件安装(tarjan缩点+树上背包)
传送门看题面非常容易想到:有依赖的树上背包问题。在给有向图且存在环的情况下(即多个软件互相依赖,只能同时选择装或不装),用 tarjantarjantarjan 缩成有向树处理。由于对于任意一个结点,若不选则其所有后代都不能选,得到状态转移方程dp[x][j+k]=max(dp[x][j+k],dp[x][j]+dp[to][k])dp[x][j+k]=max(dp[x][j+k],dp[x][j]+dp[to][k])dp[x][j+k]=max(dp[x][j+k],dp[x][j]+dp[to][k]原创 2022-06-29 17:08:22 · 251 阅读 · 0 评论 -
cf1695C. Zero Path(div2)【贪心,伪dp】
传送门题意在 nnn * mmm 的网格中,每个格子上的数字仅为 111 或 −1-1−1,每次只能向下或向右走,问从左上到右下是否存在一条路径使得路径上所有数字之和正好等于 000 ?第一反应是和 2021ICPC江西省赛A 一样的做法,三维滚动数组记录当前在第 iii 行第 jjj 列且拥有 kkk 个 111 的状态是否存在,最后判断处于右下角时 kkk 是否等于 (n+m−1)/2(n+m-1)/2(n+m−1)/2 。容易看出当 n+mn+mn+m 为偶数时可以特判无解。然而本题的侧重点是最后和为原创 2022-06-26 23:49:28 · 222 阅读 · 0 评论 -
洛谷p1273 有线电视网(树上背包经典)
传送门本题中,对于每个结点,其可连接到的用户数即为后代中叶节点的个数,因此可以先跑一遍 dfsdfsdfs (代码中实现为 deal()deal()deal() 函数)统计。同时对于任一结点,若将其方案按连接的用户数进行划分,则可选方案为 1,2,... ,cnt[n]1,2,... \ , cnt [n]1,2,... ,cnt[n],其中 cnt[n]cnt [n]cnt[n] 即为后代中叶节点的个数。由于一次仅能选择其中一种方案,因此可以考虑采用分组背包进行处理。采用状态 f[原创 2022-03-25 19:25:24 · 298 阅读 · 0 评论 -
2021ICPC江西省赛A-Mio visits ACGN Exhibition(dp)
传送门题意给定一个 n∗mn*mn∗m 的网格,每个格子内只能是 000 或 111,现在要求从网格的左上角 (1,1)(1,1)(1,1) 走到网格的右下角 (n,m)(n,m)(n,m) ,且每次只能向右或向下移动一格。要求在走到终点时,至少拿到了 ppp 个 000 和 qqq 个 111 。分析不论选择以何种路径行走,能够经过的格子数最多为 n+m−1n+m-1n+m−1 ,因此当 p+q>n+m−1p+q>n+m-1p+q>n+m−1 时,一定不存在合法的方案满足条件,由此降低数据 ppp原创 2022-03-18 13:24:41 · 306 阅读 · 0 评论 -
月之暗面(入门级树形dp)
传送门本题中,由于普通颜色和特殊颜色的种类下限为 111 ,因此对于树上的任意一个结点,都可以选择采用普通颜色或特殊颜色。通过状态 f[i][j]f[i][j]f[i][j] 表示对于结点 iii 采用 jjj 涂色的方案数,其中 j=0j=0j=0 表示采用普通颜色,j=1j=1j=1 表示采用特殊颜色。由于相邻结点不能够使用同一种特殊颜色,因此若某一结点选择使用特殊颜色,则其儿子能够选择的颜色共有 x+y−1x+y-1x+y−1 种,即可以使用除其父亲选择的某种特殊颜色以外的其他颜色。而若某一结点选原创 2022-03-17 20:07:00 · 239 阅读 · 0 评论 -
cf544C Writing Code(降维完全背包)
传送门有 nnn 个程序员总共需要写 mmm 行代码,每个程序员写一行代码都将产生 aia_iai 个 bugbugbug (推荐退役?) ,要求写完 mmm 行代码后的总 bugbugbug 数不超过 bbb 。问有多少种可行的方案。完全背包问题,因为可以由一个程序员把所有代码全部写完。由于数据范围为 500500500,可以发现开三维 dpdpdp 必定会炸,因此需考虑降维优化。当采用三维时,有 f[i][j][k]f[i][j][k]f[i][j][k] 表示前 iii 个人写了 jjj 行代原创 2022-03-13 12:37:28 · 338 阅读 · 0 评论 -
Modulo Sum(cf577b)数学+dp
传送门subsequence = 非连续,即是否能够从数组中选出若干数字,使得这些数字之和 mod m=0mod\ m=0mod m=0。本题的进阶版可见:代码源每日一题-选数(需标明选出符合条件的数字下标)由于 nnn 的数据范围很大,可以想象直接使用 dpdpdp 必定会炸,但发现当 n≥mn ≥ mn≥m 时可根据鸽巢定理判定答案一定有解。原因:求前缀和数组并对 mmm 取模,得到的结果必定落在 [0,m−1][0,m-1][0,m−1] 区间,共 mmm 个数。当 n≥m原创 2022-03-13 12:08:48 · 417 阅读 · 2 评论 -
TSP问题-郊区春游+简单环
tsp问题,又称旅行商问题,原题意为一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地。应如何选择行进路线,以使总的行程最短。郊区春游传送门tsp 问题采用的基本描述状态为:f[i][j]f[i][j]f[i][j] ,其中 iii 将每个点均表现为二进制状态,111 表示已经过,000 表示未经过,jjj 表示完成该状态当前的点(即最后一步到达的点),由此下一步走到 kkk 点的状态转移方程为 f[i+i∗][k]=f[i][j]+dis[j][k]f[i+原创 2022-03-11 20:03:58 · 314 阅读 · 0 评论 -
洛谷1879-[USACO06NOV]Corn Fields G-玉米田(状压dp)
传送门题目描述输入描述输出描述输入样例2 31 1 10 1 0输出样例9互不侵犯 的青春版(?),本题省去了对于数量上限的要求,因此仅需使用二维状态 f [ i ] [ j ] 即可,其中 i 表示种到了第 i 行,j 表示该行是以第 j 种状态种地。对于每一行,同样进行初始化枚举每一种状态是否符合种地要求,若存在相邻的 1 则将该状态标为非法。状态转移方程:f[i][j]=f[i−1][x]f[i][j]=f[i-1][x]f[i][j]=f[i−1][x]其原创 2021-11-13 19:28:07 · 1052 阅读 · 0 评论 -
SCOI2055 互不侵犯(状压dp)
传送门题目描述输入描述输出描述输入样例3 2输出样例16数据范围状态压缩 dp 的又一入门题,第一道能独立写出的状压,感动落泪 ,由于每个国王的攻击范围是周围 8 格,因此对于同一行而言,不能出现摆放相邻国王的情况,且摆放到某一行时,也要考虑是否会被上一行摆放的国王攻击到。解题过程可参照:蒙德里安的梦想首先枚举每一行所有可能的状态,并判断以该状态的摆法是否可行。本题中同样以 1 表示该位置摆放了国王,0 则表示没有,因此对于 n * n 的矩阵,显然长度为 n 的行中,可原创 2021-11-13 15:59:10 · 704 阅读 · 0 评论 -
牛客小b白月赛40 B-跳跳跳(区间dp)
传送门题目描述输入描述输出描述输入样例131 1 1输出样例16样例1说明输入样例231 2 3输出样例214样例2说明原创 2021-11-09 20:33:27 · 221 阅读 · 0 评论 -
状态压缩dp入门-蒙德里安的梦想
题目描述输入描述输出描述数据范围输入样例1 21 31 42 22 32 42 114 110 0输出样例10123514451205本题中,采用了先放横的小方块,再在空位插入竖的小方块的解法,此时总方案数即为只放横着小方块的合法方案数。原因在于:对于某种放置完横的小方块的情况后,插入竖的小方块的方法一定是唯一的。因此本题可转化为在按某种方法放置了横的小方块后,剩余空位是否满足能够插满若干竖的小方块,满足该情况的方法数总和即为总方案数。由于竖小方原创 2021-11-08 18:10:31 · 136 阅读 · 0 评论 -
没有上司的舞会(树形dp)
原题链接题目描述输入描述输出描述输入样例711111111 32 36 47 44 53 5输出样例5数据说明树形 dp 的板子题,如果从根向子结点进行遍历(因为每个结点只能有一个父亲,所以自上而下可以规避一些麻烦),显然对于每一个结点,选与不选只会影响它的子结点是否能够被选入,因此可用 f ( i , 0 / 1 ) 描述每一个状态,其中第一维代表该结点的编号,第二维表示是否被选入,其中 0 代表不选,1 代表可选。因为只会影响到子结点的状态,由此原创 2021-11-07 18:30:49 · 71 阅读 · 0 评论