rounding maximum 1857b cf
CF1672
A Log Chopping 直接把每次总切割数算出来就行 #include<bits/stdc++.h> using namespace std; int t; signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0) ......
CF888F题解
分析 手玩样例发现连一条边实际上是将一个多边形分割成两个部分,而且不能在这两个部分直接连边,发现这两个部分是完全独立的,于是考虑区间 DP。 设状态 \(f_{l,r}\) 表示将 \([l,r]\) 区间连成树的方法数量。 那么存在两种转移,一种是 \(l,r\) 间不直接连边,这样中间的点都需要 ......
CF 刷题计划 4
应该是 OI 退役前最后一次发「CF 刷题计划」了。 难度范围实时浮动,取决于智商浮动。 反正也不会再出模拟赛了,所以干脆都放上来吧。 难度标识(0-5 保留一位小数): 标准参考 1 一眼丁真 2 需要时间思考 3 需要题解提示 4 需要仔细阅读题解 CF1430G Yet Another DAG ......
CF1586I 题解
CF1586I 题解 传送门 更好的阅读体验 简化题意:有 $n\times n$ 的网格,你需要进行黑白染色,使得每个格子的颜色恰好与 2 个与其四联通的格子的颜色相同,其中有些位置已经确定,问是否有解及是否有唯一解。 思路: 很神仙的构造题。 先从特殊的地方入手。对于 4 个角,它们只和 2 个 ......
CF868E Policeman and a Tree
感觉,好自然啊! 想法 dp,想办法分解这个博弈的过程。发现警察会从一片叶子到另一片叶子,在叶子抓住小偷时所有小偷可以全树乱走。因此 dp:\(f_{u, i}\) 表示警察位于 \(u\),全树剩余 \(i\) 个小偷时的答案。 因为两边都绝对理性,小偷在警察离开叶子后不会移动并位于多片叶子上。考 ......
Pinely Round 2 (Div. 1 + Div. 2) (CF1863)
本来开了某场远古 Div 1,然后学了一堆前置知识至今仍然不会 E。换一场写来得及吗? A. Channel 模拟,略。 B. Split Sort Description 给你一个长度为 \(n\) 的排列。 每次操作你可以选择一个数 \(x\),然后类似于快速排序地把小于 \(x\) 和大于等于 ......
Codeforces Round#905 解题报告
按理来说最近开始了一天一套 div2 计划,第一天做了一套 Div1,第二天做了 hustfc,第三天因为要赶 latex 期末考试,所以什么也没做。 明天写一下 hustfc 比较牛的几题。 A 暴力怎么做,是不是加加加,然后判断。 B 本质上是让长度为 \(i\) 的后缀全是 \(0\) 那么找 ......
CF1746F Kazaee 题解
对集合的一些判断可以考虑随机化哈希。 给每个数随一个权,如果集合 \(S\) 中每个数的出现次数都是 \(k\) 的倍数,那 \(S\) 中元素的权值之和就会是 \(k\) 的倍数,否则会是一个在 \([0,k)\) 中随机的值。 也就是说如果这个集合不满足要求,我们做一次这个检测,有 \(\fra ......
CF888E题解
分析 看到 \(n \leq 35\) 的数据范围就想到了 meet-in-middle。 先爆搜出对于 \(1 \sim \frac{n}{2}\) 和 \(\frac{n}{2} \sim n\) 两个下标范围内在模意义下所有的和。 然后用一个常见 trick,就是枚举第二个部分的和,然后匹配第 ......
Codeforces Round 904 (Div. 2)
A. 没想到是暴力,做的很晚 B. 手玩一下即可 C. Medium Design 给定一个长为 \(n\) 的数组 \(a\) ,和若干条线段 \([l_i,r_i]\) ,你可以选择这其中的任何若干条线段,并让 \(a_l\sim a_r\) 均 \(+1\).请你计算可以得到的 \(\max( ......
「题解」Codeforces Round 905 (Div. 3)
before 终于有一篇题解是一次性更所有题的了。 A. Morning Problem A. Morning Sol&Code 根据题意模拟即可。 #include <bits/stdc++.h> typedef long long ll; int min(int a, int b) { retu ......
CF888D
分析 很容易想到从 \(0\) 开始枚举 \(a_i \neq i\) 的位置个数一直枚举到 \(k\) 计算每种情况下的答案加在一起即为答案。 对于 \(k\) 确定的情况,\(a_i = i\) 的位置共有 \(C_{n}^{n-k}\) 种情况,剩下的位置要保证 \(a_i \neq i\)。 ......
CF888B题解
分析 题意为选出最多的操作使机器人执行完仍停留在原地。 分为左右和上下两类,则每一类的可执行操作数都是操作次数最少的一种操作的二倍(因为正反操作都要执行才能抵消)。 直接统计每种操作的操作次数计算答案即可。 代码 #include <iostream> using namespace std; co ......
CF888A题解
分析 因为一个数不可能同时大于并小于它两边的数,所以两种数的集合不存在交集。 所以分别扫一遍两种数的个数加在一起即可。 代码 #include <iostream> using namespace std; constexpr int MAXN(1000007); int a[MAXN]; int ......
CF1555E题解
分析 观察到题面是求最小极差,想到 two-pointers。 按 \(w_i\) 大小排序,然后发现一个子段的子段的答案肯定不优于原子段。 和CF1777C以及NOI2016区间一样,选取合法左端点然后选取最大合法右端点。 值得注意的是,本题要求首尾相接,所以为了避免选取的线段无交集,将 \(r\ ......
CF1572F Stations 题解-Segment Tree Beats
20231025 CF1572F Stations 题解-Segment Tree Beats 吉司机线段树好题!!!CF3400。 传送门 Statement 有 \(n\) 个广播站,第 \(i\) 个广播站高度为 \(h_i\),范围为 \(w_i\)。初始 \(h_i=0,w_i=i\)。广 ......
CF1777E题解
分析 看到求最大值最小,不难想到二分。 很容易想到二分最大可取边长度。 思考如何check。 首先如果存在一点 \(u\) 符合条件,那么我们很难判断那条边该翻哪条边不该翻,很难去check。 那么大胆假设对于每个点 \(u\),每条边的方向只会确定为一个状态。 尝试证明。 假设存在边 \(a, b ......
CF1132C Painting the Fence 题解
@目录DescriptionSolutionCode Description 有一面长为 \(n\) 的墙以及 \(q\) 个工人,第 \(i\) 个工人粉刷 \(l_i\) 到 \(r_i\) 的墙面,现在要去掉两个工人,问剩余 \(q-2\) 个工人最多能粉刷多少墙面。 Solution 注意数 ......
题解 CF903G【Yet Another Maxflow Problem】
加边 \(A_n\stackrel{0}{\to}A_{n+1}\),\(B_0\stackrel{0}{\to}B_1\)。称形如 \(A_i\to A_{i+1}\) 的边为左部边,形如 \(B_j\to B_{j+1}\) 的边为右部边,形如 \(A_i\to B_j\) 的边为中间边。 根据 ......
CF1467E Distinctive Roots in a Tree
突然发现深究一些树上问题还是挺有意思的哈。 显然对于同一种权值的任意两个结点,其两端的部分都是不合法的。 维护两个标记表示子树内均不合法与子树外均不合法即可。但相同权值的点对数量是 \(O(n^2)\) 的,我们要优化这个过程。 发现很多点对都是无用的。DFS 下去,遇到一个 \(x\) 权值的结点 ......
CF1854E Games Bundles 题解
乱搞题 设个 \(dp[i]\) 表示和为 \(i\) 的子序列个数,那么转移是容易的, \(dp[j]+=dp[j-i]\) ,然后就判下 \(dp[60]+dp[60-i]\) 是否大于 \(m\) ,发现这样子搞对于比较大的数可能达不到 \(m\) 的限制,因为这样子转移,默认的是一个数只选一 ......
CF1878B题解
CF1878B Aleksa and Stack 题目翻译 给定 \(n\),试构造一个长度为 \(n\) 的严格上升正整数序列 \(a_1, a_2, a_3, ..., a_n\) 使得 \(\forall i \in [3, n], (a_{i - 1} + a_{i - 2}) \nmid ......
Codeforces Round 905 div2 F题
记答案为\(ans_i\),表示从1到i次修改出现的字典序最小的数组a, \(c\)数组表示\(ans_i\)出现之后,所有修改的累加和。用一个vector存一下\(ans_i\)之后的所有修改。从1到q遍历每一次修改时,对\(c\)数组进行区间赋值操作,如果\(c\)数组中第一个不为0的数<0,那 ......
VK Cup 2016 - Round 1 (CF639)
A. Bear and Displayed Friends 这是 Div2 的题,不写。 B. Bear and Forgotten Tree 3 这种东西怎么评蓝的? Description 给定 \(n,d,h\),构造一棵有 \(n\) 个点,直径为 \(d\),高度为 \(h\) 的树。 \ ......
「解题报告」Codeforces Round 653 (Div. 3)
A. Required Remainder You are given three integers \(x, y\) and \(n\). Your task is to find the maximum integer \(k\) such that \(0 \le k \le n\) that ......
CF1777C题解
分析 看到题面里面的子序列觉得很恶心,如果是子段感觉就会比较好做。 如果直接填上子序列中间的空隙就可能会取一些比必须要取的数更大或者更小的数,影响我们的答案。 那么就可以直接排序,使得子序列中间的空隙的数必然 \(\geq\) 左端且 \(\leq\) 右端,不会影响我们的答案(因为极差只看最大最小 ......
[题解]CF1223F Stack Exterminable Arrays
CCF 出的原题观摩一下。 思路 首先可以用一个 Trie 来维护。 在这里对本文中的一些变量做一下说明。 \(p\) 表示当前维护的 Trie 中,指向的元素编号。 \(t_i\) 表示在 Trie 中编号为 \(i\) 的元素在原序列中的值。 \(f_i\) 表示在 Trie 中编号为 \(i\ ......
CF809D Hitchhiking in the Baltic States-平衡树+DP
CF809D Hitchhiking in the Baltic States-平衡树+DP Statement 给出 \(n\) 个区间 \([l_i,r_i]\) 和 \(n\) 个未知数 \(a_1,a_2,\dots,a_n\),现在你要确定这 \(n\) 个数,使得 \(a_i\in[l_ ......
Codeforces Round 905 (Div. 2)
Preface 周日晚上Div1,2,3同乐,但我不想打Div1,同时第三个号由于只打了两场没够到Div2的门槛,因此刚好打不了Div2,遂玩了一晚上LOL 今天补了下这场题感觉难度偏低,E之前的题都比较签,F刚开始没想到转化成差分最小准备去写扫描线+线段树了,后面发现其实可以写的很简单 A. Ch ......
CF1887D Split
左侧最大值小于右侧最小值,其实就是左侧的值全部小于右侧,即,我们可以在区间 \([l,r]\) 内找到一个阈值 \(x\) 和一个位置 \(i<r\),满足 \(\forall j\in[l,i],a_j\le x\) 且 \(\forall j\in(i,r],a_j> x\)。 考虑刻画出所有 ......