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