随笔分类 - 动态规划
摘要:题目链接:https://codeforces.com/problemset/problem/1585/F 题解: 难难难 考虑容斥:设 $A_i$ 表示 $b_i \neq b_{i+1}$ ($i=1,2,\cdots,n-1$) 时对应的 $\{b_i\}$ 方案的答案 那么答案就是 $$\b
阅读全文
摘要:题目链接:https://codeforces.com/contest/1842/problem/E 题解: 首先,如果两个等腰三角形相交了,那答案肯定不会更优。因此不会相交。 先考虑一个 $n^2$ 的 dp: 设 $dp_i$ 表示考虑到 $x=i$ 时的最小代价,首先可以先都加一个 $\sum
阅读全文
摘要:CF1826E 这个题比赛的时候基本做出来了,就是不会用 bitset 导致最后寄了。这已经是第三次很有希望做出 E 最后没有做出来了 /ll 好几个月了一直卡在四题,吐了 首先如果对于一个模特,她在 $i$ 城市的所有分数都分别小于 $j$ 城市的,那么就 $i\rightarrow j$ 连一条
阅读全文
摘要:一句话概括动态 dp:用来解决带修改/多次区间询问的 dp 问题。将转移写成矩阵的形式,然后利用线段树求解区间问题/单点修改 1814E 注意一条边要么选 2 要么选 0 次,而且第一条边一定是选了 2 次。如果有一条边没选,那么这条边两侧的边一定都选了。 设 $f_i$ 代表考虑到第 $i$ 条边
阅读全文
摘要:比赛链接:https://codeforces.com/gym/104081 目前就做了 8 题,里面还有 4 个水题…… 水题:ACEG,模拟题意即可,C 和 E 有一些细节。不想写题解了 F 首先目标是如何将这 9 个数分组,由于答案一定存在,考虑随机化,固定 $a_1 \in S_1$,然后随
阅读全文
摘要:题目链接:https://codeforces.com/contest/1809/problem/G 题解: 一道很强的 dp 首先翻译条件:predictable 是什么意思?发现就是对每一个下标,前缀 max 和下一个位置至少差一个 $k+1$ 看到 $n \leq 10^6$,可以猜测最后应该
阅读全文
摘要:题目链接:https://codeforces.com/problemset/problem/1778/F 题解: 设 $dp_{i,j}$ 表示考虑到 $i$ 结点,要让子树内的点都变成 $a_i$ 第 $j$ 小约数的倍数的话,至少要操作多少次 首先预处理一下 $1..1000$ 的所有约数 考
阅读全文
摘要:题目链接:https://codeforces.com/contest/1693 这场的题都非常好啊…… 因为现在是从 div1 开始做了,所以可能刚开始会有点吃力(这场我就会做一个 1B 呜呜呜) 1A 先把后缀的极长 0 段删去 考虑对于每一个 右移 操作,首先必然和一个 左移 操作一一对应(最
阅读全文
摘要:E 注意到后面选对前面的答案没有影响,而且前面选的顺序对后面的影响是连续的一段(如选 2 个,那么对应的 $c$ 就应该是 $c[i-2..i]$(对应 $i$ 是 1、2、3 个选时的答案)) 然后就可以 dp 了:设 $dp[i][j]$ 表示考虑到前 $i$ 个物品,选了 $j$ 个时的最小花
阅读全文
摘要:题目链接:http://zhengruioi.com/problem/87 题解: 首先考虑 $f(l,r)$ 代表什么,官方题解很详细了就不再赘述了: 因此我们要求的就是对于所有 $l,r \rightarrow l-1$ 和 $r$ 的最长公共前缀的 1 的个数,记为 S 容易发现答案就是所有
阅读全文
摘要:bitset:一个01位如果用bool存的话需要 1byte,而用bitset只需要 1bit(=1/8 byte) 每次两个集合取并的时候可以除以一个大常数(32/64),从而优化复杂度 LOJ515 设 $dp[i]$ 表示考虑到第 $i$ 个区间,能形成的和的状态是0/1(该位为1代表可以出现
阅读全文
摘要:题单:https://www.luogu.com.cn/training/100578#problems 嘛虽然是 26 题,但是简单的题就不想写了... 就写绿题及以上的吧 E 对重量 dp,设 $dp[i][v]$ 表示考虑到前 $i$ 个物品,价值为 $v$ 时的最小重量 // by SkyR
阅读全文
摘要:sosdp 可以做的题目:对子集/超集的 dp,这里对子集相关的部分做一下分析 参考资料 设 $f[mask][i]$ 表示从低到高考虑到 $mask$ 的第 $i$ 位(从 0 开始算),而且这 $i+1$ 位都是 $mask$ 的子集并且第 $i+1$ 位及以上都和 $mask$ 完全相同时的和
阅读全文
摘要:比赛链接:https://codeforces.com/contest/225 题解: A 题意题 // by SkyRainWind #include <bits/stdc++.h> #define mpr make_pair #define debug() cerr<<"Yoshino\n" #
阅读全文
摘要:题目链接:http://zhengruioi.com/problem/370 题解: 考虑对于 $S[l..r]$ ,如果要符合条件必然是在最高位分成了至少两段(也可能没有分出来,那就继续下一位) $S[l..k] 和 S[k+1..r]$,其中前半段这一位的字符小于后半段这一位的字符,然后前半段就
阅读全文
摘要:比赛链接:https://atcoder.jp/contests/abc285 题解: ABC 水题 int a,b; scanf("%d%d",&a,&b); if(b==2*a||b==2*a+1)cout<<"Yes"; else cout<<"No"; scanf("%d",&n); sca
阅读全文
摘要:题目链接:https://codeforces.com/contest/1775/problem/F 题解: 首先考虑第一问 考虑将答案的图形补成一个矩形 显然出现凹槽不优,因此可以看成一个矩阵去掉几个角之后的图形 因此补成矩形之后周长仍然不变 注意到补成矩形之后的长和宽相差最多1的时候一定可以取到
阅读全文
摘要:设 $f[i][j][0/1]$ 表示考虑到第 $i$ 个位置,已经形成了极大的 $j$ 段,当前位置为 0/1 的期望值 ; $g[i][j][0/1]$ 也同理,不过维护的是概率。 (思考:这种不是求最优决策而是求某种固定的答案的问题,可以再开一个数组维护一下当前状态下的其它值,因为没有决策也就
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P2157 题解: 注意每个决策会跟其在前面还没有选过的人有关(bi),会和上一次选的人有关 考虑 $dp[i][S][k]$ 表示考虑到第 $i$ 个人,$[i,i+7]$ 是否选了的状态是 $S$ ,最后一个选的位置是
阅读全文
摘要:比赛链接:https://atcoder.jp/contests/abc281 题解: D $dp[i][j][k]$ 表示考虑到第 i 个数,集合加入了 $k$ 个数,余数为 $j$ 的答案 转移即可 // by SkyRainWind #include <cstdio> #include <ve
阅读全文

浙公网安备 33010602011771号