
动态规划
文章平均质量分 65
bifanwen
梦想是遥不可及而奇幻莫测的,它给我全部的力量,它把我叫醒。
展开
-
POJ3046 Ant Counting 题解
博客园同步原题链接朴素动态规划。用 fi,jf_{i,j}fi,j 表示前 iii 种 蚂蚁选了 jjj 种 的方案数。类似背包。首先不考虑个数限制, fi,j=fi−1,j+fi,j−1f_{i,j} = f_{i-1,j} + f_{i,j-1}fi,j=fi−1,j+fi,j−1. 这样完成了多重背包的效果(就是 fif_ifi 的那一行在不断滚动),但是若设第 iii 种蚂蚁有 aia_iai 个,则不能完全背包。考虑如何解决限制。把超过的那部分减去:很明显,这样的背包很可能第原创 2021-07-24 22:50:28 · 186 阅读 · 0 评论 -
POJ1742 Coins 题解
博客园同步原题链接多重背包板子。具体可以参考 再谈单调队列优化 & 背包九讲.这里再仔细讲一下二进制拆分的具体做法。假设你有 777 个价值为 viv_ivi,重量为 wiw_iwi 的物体。现在考虑把多重背包变成 010101 背包。如果我们把 111 个这样的物体看做第一组,222 个这样的物体看做第二组,444 个这样的物体看做第三组。你会发现用这三组进行的 010101 背包可以覆盖原来的情况(从二进制上很好理解),并且本来枚举 777 次,现在你不用去枚举这三组的所有情况(否则原创 2021-07-23 22:37:49 · 261 阅读 · 1 评论 -
POJ2229 Sumsets 题解
博客园同步原题链接这题有点套路。我一开始的想法是用 fn,if_{n,i}fn,i 表示最大幂次最多为 2i2^i2i 表示 nnn 的方案数。然后发现 O(1)\mathcal{O}(1)O(1) 转不了。于是废了。考虑用 fif_ifi 表示 iii 的答案数。分类讨论。iii 为奇数时,则必然有 111,剩下 i−1i-1i−1,因此 fi=fi−1f_i = f_{i-1}fi=fi−1,iii 为偶数时,则再分类讨论。如果还有 111:同样 fi−1f_{i-1}fi−1.原创 2021-07-22 22:08:23 · 160 阅读 · 0 评论 -
P2049 魔术棋子 题解
博客园同步原题链接简要题意:在一个 n×mn \times mn×m 的魔术棋盘中,每个格子中均有一个整数,当棋子走进这个格子中,则此棋子上的数会被乘以此格子中的数。一个棋子从左上角走到右下角,只能向右或向下行动,请问此棋子走到右下角后,模 %k\% k%k 可以为几?(原题题意足够简要了吧)n,m,k≤100n,m,k \leq 100n,m,k≤100.考虑一个很朴素的做法,O(nmk)\mathcal{O}(nmk)O(nmk) 的那种。很显然我们不可能算出所有路径的答案(Cn+mmC_原创 2020-11-06 19:13:30 · 301 阅读 · 1 评论 -
LOJ #2348. 「JOI 2018 Final」美术展览
博客园同步题目链接简要题意:nnn 个艺术品,分别有尺寸 AiA_iAi 和价值 BiB_iBi. 选定若干艺术品的“总价值”为 其价值之和减去尺寸的极差。极差即为最大值和最小值的差。求这个“总价值”的最大值。n≤5×105n \leq 5 \times 10^5n≤5×105,1≤Ai≤10151 \leq A_i \leq 10^{15}1≤Ai≤1015,1≤Bi≤109(1≤i≤n)1 \leq B_i \leq 10^9 (1 \leq i \leq n)1≤Bi≤109(1≤i≤原创 2020-10-03 21:53:47 · 383 阅读 · 0 评论 -
P1776 宝物筛选 题解
博客园同步原题链接简要题意:多重背包模板。即给定 nnn 个物品和一个容积为 VVV 的背包,每件物品有价值 viv_ivi,重量 wiw_iwi 和个数 gig_igi. 求最大价值。n≤105n \leq 10^5n≤105.如果你学过 背包九讲算法 ,这里就显得比板子还要板子了吧!如果您没有学过,可以去我的博客搜索一下,学习完了。时间复杂度:O(nloggi)\mathcal{O}(n \log g_i)O(nloggi).(这里给出二进制拆分的做法)实际得分:100pts1原创 2020-09-16 22:15:53 · 197 阅读 · 0 评论 -
P1122 最大子树和 题解
博客园同步原题链接简要题意:给定一棵 nnn 个节点的树,有点权,求其中最大的连通块之和。数据范围:n≤1.6×104n \leq 1.6 \times 10^4n≤1.6×104.很显然,考虑用树形 dp\text{dp}dp 解决此题。fuf_ufu 表示以 uuu 为根的子树中 包含 uuu 节点 的答案。则易得:fu=au+maxv∈subtree(u)max(fv,0)f_u = a_u + \max_{v \in \text{subtree}(u)} \max(f_v ,原创 2020-09-16 22:02:28 · 190 阅读 · 0 评论 -
P1103 书本整理 题解
博客园同步原题链接简要题意:给定 nnn 个二元组 {x,y}\{x,y\}{x,y},你的任务首先要将它们按照 xxx 排序(保证 xxx 两两不同),然后从中去掉 kkk 个二元组,使得 剩下的每相邻二元组 yyy 的差的绝对值之和最小,求这个最小值。n≤100,x,y≤200n \leq 100 , x,y \leq 200n≤100,x,y≤200.原题中书的高度即为 xxx,书的宽度即为 yyy.首先我们建立结构体 book {height , width原创 2020-09-14 22:00:14 · 309 阅读 · 1 评论 -
P1722 矩阵 II & P1044 栈 题解
博客园同步原题链接 111原题链接 222我们先讲 P1722\text{P1722}P1722.简要题意:有一个 2×n2 \times n2×n 的网格,现在你需要给它们的每个格子染上红色或黑色,使得所有格子中红格子与黑格子一样多。n≤100n \leq 100n≤100.既然数据范围较小我们可以考虑二维的 dp\text{dp}dp.用 fi,jf_{i,j}fi,j 表示前 iii 个格子染色 jjj 个红色的方案数。易得 fi,j=fi−1,j+fi−1,j−1f_{i,j}原创 2020-08-03 16:56:15 · 203 阅读 · 0 评论 -
P1435 回文字串 题解
博客园同步原题链接简要题意:给定一个长为 nnn 的字符串 sss,求至少插入多少个字符能使得 sss 变成回文串。n≤103n \leq 10^3n≤103.IOI2000\text{IOI2000}IOI2000 签到题,可以仔细看一下。这题个人用的区间 dp\text{dp}dp 很有思考价值。可以思考一下:答案最大为 nnn.显然直接把 rev(s)\text{rev}(s)rev(s) 加到 sss 后面就行(rev\text{rev}rev 表示翻转后的串),这样是 nnn 个字符原创 2020-07-19 15:40:30 · 279 阅读 · 0 评论 -
P1395 会议 题解
博客园同步原题链接简要题意:给定 nnn 个节点的一棵树,用 dis(x,y)\text{dis}(x,y)dis(x,y) 表示 x,yx,yx,y 的距离,sx=∑y=1ndis(x,y)s_x = \sum_{y=1}^n \text{dis}(x,y)sx=∑y=1ndis(x,y).求最小的 xxx 和 sxs_xsx.(其实就是求树上到一点距离之和最小的点和该距离)n≤5×104n \leq 5 \times 10^4n≤5×104.数据加强:n≤107n \leq 10^7n≤原创 2020-07-19 12:38:23 · 867 阅读 · 1 评论 -
P3205 [HNOI2010]合唱队 题解
博客园同步原题链接简要题意:有长度为 nnn 的序列 aaa 和一个空序列 bbb. 下面进行操作:a1a_1a1 直接进入 bbb 序列中。对于 ai=2na_{i=2}^nai=2n 的每个 aia_iai,若 ai>ai+1a_i > a_{i+1}ai>ai+1,则将 aia_iai 插入 bbb 序列末尾;否则插入 bbb 序列开头。每个 aaa 唯一对应一个 bbb,但是每个 bbb 并不唯一对应一个 aaa.现在已知 bbb 序列,试求满足条件的原创 2020-07-18 10:34:54 · 262 阅读 · 0 评论 -
P1220 关路灯
博客园同步原题链接简要题意:有 nnn 个路灯,你一开始在第 ccc 个路灯的位置。每个路灯都有 LiL_iLi (距离)。每过 1s1s1s,第 iii 个路灯就会产生 PiP_iPi 的消耗,你可以走 111 个单位距离。你可以花 0s0s0s 的时间关掉路灯,关掉路灯之后路灯不会再有消耗。你需要求出:最小的消耗是多少?1≤n≤501 \leq n \leq 501≤n≤50,是不是很简单?我们首先已经有了:O(2n⋅n)\mathcal{O}(2^n \cdot n)O(2n⋅n) 的原创 2020-07-17 21:25:06 · 144 阅读 · 0 评论 -
再谈单调队列优化 & 背包九讲
博客园同步前置知识:浅谈单调队列简单背包问题这篇文章我们主要研究 单调队列优化 dp\text{dp}dp 如何用于背包问题。01\text{01}01 背包nnn 个物品,背包体积为 VVV,每个物品有 viv_ivi(价值)和 wiw_iwi(重量),每个物品只有 111 个。求在不超过背包体积的情况下能获得的最大价值。n,V,vi,wi≤1×103n,V,v_i,w_i \leq 1 \times 10^3n,V,vi,wi≤1×103,时间限制 1s1s1s,空间限制 1原创 2020-07-12 21:38:42 · 272 阅读 · 0 评论 -
P1440 求m区间内的最小值 题解
博客园同步原题链接简要题意:给定 nnn 个数 {ai}\{a_i\}{ai} 和一个 mmm,输出所有 1≤i≤n1 \leq i \leq n1≤i≤n 的 minmax(1,i−m+1)iai\min_{\max(1, i-m+1)}^{i} a_iminmax(1,i−m+1)iai.n,m≤2×106n,m \leq 2 \times 10^6n,m≤2×106.显然这就是 对每个数求出其前 mmm 个数的最小值。朴素令 fi=minmax(1,i−m+1)iaif_i原创 2020-07-05 14:53:18 · 258 阅读 · 0 评论 -
P2831 愤怒的小鸟 题解
博客园同步原题链接简要题意:平面直角坐标系的第一象限有若干绿猪,小鸟要通过若干条函数解析线来消灭它们。每个小鸟可以把所有 y=ax2+bx(a<0)y=ax^2 + bx (a<0)y=ax2+bx(a<0) 上的 (x,y)(x,y)(x,y) 的所有绿猪消灭,当然没有绿猪就是白走。问最少多少次后可以消灭所有的绿猪。TTT 组数据。前记实际上,之前写过一篇 骗分导论,里面有点口出狂言,既然自己说了能 60pts60pts60pts 那还不来填坑?算法一对于 70%70 \原创 2020-06-10 22:01:00 · 332 阅读 · 0 评论 -
P2657 [SCOI2009]windy数 题解
博客园同步原题链接简要题意:一个 相邻两个数字差的绝对值都 ≥2\geq 2≥2 且不含前导零 的数 被称为 “windy数”。问从 aaa 到 bbb 的 “windy数”的个数。首先,我们考虑 111 ~ nnn 的 “windy数” 的个数怎么求。用 fi,jf_{i,j}fi,j 表示有 iii 位,最高位为 jjj 的方案数。那么,从 i−1→ii-1 \rightarro...原创 2020-05-02 18:52:37 · 269 阅读 · 1 评论 -
洛谷 P1006 传纸条 题解
博客园同步原题链接本题 n≤100n \leq 100n≤100 ,我们先分析一下 大力搜索 的效率。众所周知, 从 1,11,11,1 走到 n,mn,mn,m (每次只能向右走或向下走) 的方案数为:Cn+mmC_{n+m}^mCn+mm简单解释:共走 n+mn+mn+m 步,其中 nnn 步向下, mmm 步向右。而:Cn+mm=Cn+mnC_{n+m}^m = C_{n+m}...原创 2020-05-02 17:27:00 · 592 阅读 · 0 评论 -
P1352 没有上司的舞会 题解
博客园同步原题链接简要题意:给定一棵树,有点权,求 最大点权的点集使得该点集的点两两不相邻。“相邻” 的定义为 两点属于同一条边的两个端点 。显然,n≤6×103n \leq 6 \times 10^3n≤6×103 可以考虑 O(n2)O(n^2)O(n2) 的办法。但是显然可以有更优的做法。用 fif_ifi 表示 在以 iii 为根的子树中(iii 的子孙,不包括祖先) 选 ii...原创 2020-05-02 16:57:55 · 257 阅读 · 0 评论 -
P1439 【模板】最长公共子序列 题解
原题链接简要题意:给定两个 111 ~ nnn 的排列,求其 最长公共子序列。嗯,下面给出若干算法吧。算法一不管它是 111 ~ nnn 的排列这一性质。求 LCS\text{LCS}LCS(即最长公共子序列)的套路方法:用 fi,jf_{i,j}fi,j 表示 a1a_1a1 ~ aia_iai 和 b1b_1b1 ~ bjb_jbj 的最长公共子序列。那么不考虑边界问题...原创 2020-04-10 20:58:59 · 504 阅读 · 0 评论 -
CF1324E Sleeping Schedule 题解
博客园同步原题链接简要题意:每次可以将 aia_iai 减 111 或不变。求让 aia_iai 的前缀和 %h\% h%h 的值在 [l,r][l,r][l,r] 区间中的最多的个数。E题是个水dp,也不怎样用 fi,jf_{i,j}fi,j 表示前 iii 个数中,(∑k=1iak)%h=j\bigg ( \sum_{k=1}^{i} a_k \bigg ) \% h = j(...原创 2020-04-07 16:54:05 · 280 阅读 · 0 评论 -
CF1324F Maximum White Subtree 题解
博客园同步原题链接简要题意:给定一棵树,每个点有黑白两种颜色;对每个节点,求出包含当前节点的连通图,使得白点数与黑点数差最小。输出这些值。F题也这么简单,咳咳,要是我也熬夜打上那么一场。。。可惜没时间打啊美国佬怎么想的,不能让比赛设置成美国的上午,那我们就是下午了;非要设置成下午,那我们就是半夜。。。首先,这题一看就是 dp\texttt{dp}dp,树形 dp\texttt{dp}d...原创 2020-04-07 16:48:44 · 269 阅读 · 0 评论 -
P2726 [SHOI2005]树的双中心 题解
原题链接简要题意:给定一棵树,dx,yd_{x,y}dx,y 为 xxx 与 yyy 距离(dx,x=0d_{x,x} = 0dx,x=0),选出两个点 x,yx,yx,y,最小化:∑u∈V(wu×min(disx,u,disy,u))\sum_{u \in V} (w_u \times \min(dis_{x,u} , dis_{y,u}))u∈V∑(wu×min(disx,u...原创 2020-04-07 08:58:30 · 311 阅读 · 0 评论 -
P1364 医院设置 题解
原题链接简要题意:求带权树的重心。带权树的重心定义:用 disx,ydis_{x,y}disx,y 表示 xxx 和 yyy 的距离(x=yx=yx=y 则 disx,y=0dis_{x,y} = 0disx,y=0),即求一个节点 uuu,最小化:∑i=1nwi×disi,u\sum_{i=1}^n w_i \times dis_{i,u}i=1∑nwi×disi,u本题要求...原创 2020-04-07 08:34:43 · 468 阅读 · 0 评论 -
P4933 大师 题解
原题链接简要题意:求一个数列中有多少个等差子序列。(子序列 不一定连续,子串 一定连续)注:公差可以是负数。算法一对于 30%30 \%30% 的数据,n≤20n \leq 20n≤20.显然,枚举子序列,然后暴力验证。时间复杂度:O(2n×n)O(2^n \times n)O(2n×n).实际得分:30pts30pts30pts.算法二对于 60%60 \%60% 的数...原创 2020-04-06 20:41:27 · 1170 阅读 · 1 评论 -
P1351 联合权值 题解
原题链接简要题意:给定一棵树,每两个距离为 222 的点 u,vu,vu,v 会产生 wu×wvw_u \times w_vwu×wv 的“联合权值”。求 “联合权值” 的和,以及所有联合权值中的最大值。其实这题作为 NOIP 2014tg Day1T2\text{NOIP 2014tg Day1T2}NOIP 2014tg Day1T2,并不难。...原创 2020-04-06 14:58:18 · 340 阅读 · 0 评论 -
P3174 [HAOI2009]毛毛虫 题解
原题链接简要题意:给定一棵树,求最长的 “挂链” 长度。挂链定义为:一条链上所有节点与其相连的节点构成的生成树。(非严谨定义)(原题中是 “毛毛虫”,本人以为挂链更形象)这题有多种做法,这里给出思路,以及其中一种做法的代码。算法一注意到,其实我们只需要选出 “最长链”,然后在最长链的两侧挂链即可。即,先求出 树的直径 的两个端点,然后遍历一遍直径上的端点,把它们的直接连边都加入生成树...原创 2020-04-06 14:44:12 · 856 阅读 · 0 评论 -
P4147 玉蟾宫 题解
博客园同步原题链接简要题意:求最大 000 矩阵。(将字符转化为数字)本题是模板题,可以用来爆踩。???悬线法 来了!其中绿色是 000,红色是 111.下面以这个图为例讲一下算法流程。我们首先求出,以每个格子为最下面,往上堆积的最长的 000 条。则所有格子的值为:0 0 1 00 1 2 11 2 3 20 0 0 0下面,对每一行,求以这一行为底的最大矩阵。...原创 2020-04-05 17:06:31 · 363 阅读 · 1 评论 -
P5664 Emiya 家今天的饭 题解
博客园同步原题链接简要题意:对每种菜有对应的若干种烹饪方法,用二维矩阵表示。求:每种食材用不超过 ⌊k2⌋\lfloor \frac{k}{2} \rfloor⌊2k⌋ 次,至少炒一道菜,烹饪方法互不相同的个数。算法一注意到,对于 32%32 \%32% 的数据,n≤10n \leq 10n≤10,m≤3m \leq 3m≤3.这部分我们可以试试暴力。暴力的注意点是,烹饪方法是独立...原创 2020-04-02 11:56:56 · 337 阅读 · 2 评论 -
P4170 [CQOI2007]涂色 题解
原题链接简要题意:一开始你有一个长度为 nnn 的无色串,每次可以对一个区间染上相同的颜色。问最少多少次可以形成目标串。告诉你,这题的蓝是假的,太假了,数据也太弱了。完全是个暴力选手乱碾标算用的,其实本题的时间复杂度完全可以做到 O(n3)O(n^3)O(n3).第一眼看数据范围还以为是大力爆搜剪枝用 fi,jf_{i,j}fi,j 表示 [i,j][i,j][i,j] 区间形成目标...原创 2020-04-01 19:36:36 · 292 阅读 · 0 评论 -
P3847 [TJOI2007]调整队形 题解
原题链接简要题意:每次可以在数组中插入一个数(可以在两端)或删除一个数,改变一个数;求让数组成为回文数组的最小步数。这题的蓝太假了,水 dp\text{dp}dp,想到算法就可以做出。关键还是要想到用 动态规划 啊,要是想不到这题就做不出来了。(考场上可以先用搜索,然后记忆化推导也行,但是这里就不推了)显然考虑区间 dp\text{dp}dp.用 fi,jf_{i,j}fi,j 表...原创 2020-04-01 16:49:41 · 224 阅读 · 2 评论