随笔分类 - cf
摘要:"E. New Year and Old Subsequence" 思路:线段树维护矩阵乘法。 代码:
阅读全文
摘要:"D Shortest Cycle" 思路:n大于某个值肯定有个三元环,否则floyd找最小环。 代码: pragma GCC optimize(2) pragma GCC optimize(3) pragma GCC optimize(4) include using namespace std;
阅读全文
摘要:D - Fedor Runs for President 思路: 推出斜率优化公式后,会发现最优点只可能来自凸斜率中的第一个元素和最后一个元素, 这两个元素不用维护凸斜率也能知道,就是第一个和上一个元素 代码:
阅读全文
摘要:F - Expected Square Beauty 思路:https://codeforces.com/blog/entry/68111 代码:
阅读全文
摘要:G - Gang Up 思路: 每个点按时间拆点建边,然后跑最小费用流 一次走的人不能太多,假设每次走的人为k (k*k-(k-1)*(k-1))*d <= c+d k <= 24 代码:
阅读全文
摘要:E - Earth Wind and Fire 思路: 栈模拟 代码:
阅读全文
摘要:B - Three Religions 思路:dp dp[i][j][k]:a的前i个和b的前j个和c的前k个能构成的最前面的位置 删字符时状态不用改变,加字符时只会改变1*250*250个状态 代码:
阅读全文
摘要:D - Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths 思路: 树上启发式合并 从根节点出发到每个位置的每个字符的奇偶性记为每个位置的状态,每次统计一下每个状态的最大深度 为了保证链经过当前节点u,我们先计算每个子树的答案,再更新
阅读全文
摘要:E - Vasya and Binary String 思路:区间dp + 记忆化搜索 转移方程看上一篇博客。 代码:
阅读全文
摘要:F - Ivan and Burgers 思路:线性基+贪心,保存线性基中每一位的最后一个 代码:
阅读全文
摘要:D - Labyrinth 对于位置(i,j), j - c = R - L = const(常数), 其中R表示往右走了几步,L表示往左走了几步 所以R越大, L就越大, R越小, L就越小, 所以只需要最小化L和R中的其中一个就可以了 由于每次变化为0或1,所以用双端队列写bfs, 保证最前面的
阅读全文
摘要:G - Petya and Graph 思路: 最大权闭合子图 对于每条边,如果它选了,那么它连的的两个点也要选 边权为正,点权为负,那么就是求最大权闭合子图 代码:
阅读全文
摘要:2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest A Secret of Chocolate Poles 思路:暴力枚举黑巧克力的个数和厚黑巧克力的个数 代码: #pragma GCC optimize(2) #pragma GCC optimize
阅读全文
摘要:2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) 思路: A Exam 思路:水题 代码: #include<bits/stdc++.h> using namespace std; int main(){ int k; sc
阅读全文
摘要:E - The Unbearable Lightness of Weights 思路: 分组背包dp 每组最多只能选一个 一些优化可以快很多 代码:
阅读全文
摘要:F2 - Pictures with Kittens (hard version) 思路: 单调队列优化dp 代码:
阅读全文
摘要:E - Company 思路: 首先,求出每个点的dfs序 然后求一些点的公共lca, 就是求lca(u, v), 其中u是dfs序最大的点, v是dfs序最小的大点 证明: 假设o是这些点的公共lca, in[o]是o的入时间戳, out[o]是o的出时间戳, 那么对于任意一点x, in[o] <
阅读全文
摘要:C - Triple Flips 思路: 小范围暴力 大范围递归构造 构造方法: solve(l, r) 表示使l 到 r 区间全变为0的方法 为了使反转次数小于等于n/3 + 12 我们只需要保证每次反转后区间长度减少值的期望为3就可以了 如果a[l] == 0, l++ 如果a[r] == 0,
阅读全文
摘要:E - Vasya and a Tree 思路: dfs动态维护关于深度树状数组 返回时将当前节点的所有操作删除就能保证每次访问这个节点时只进行过根节点到当前节点这条路径上的操作 代码:
阅读全文
摘要:F - Make It One 思路: dp + 容斥 首先, 答案不会超过7, 因为前7个质数的乘积大于3e5(最坏的情况是7个数, 每个数都缺少一个不同的因子) 所以从1到7依次考虑 dp[i][j]: 表示选取i个数且gcd==j的方案数 dp[i][j] = C(cntj, i) - ∑dp
阅读全文