tripartite complete 1228d cf

CF888G题解

分析 看到异或不难想到 01Trie。 不难想到,当两个数的值相等的时候,我们可以当这两个点是一个点,因为连边的费用为 \(0\)。 那么对于一个序列 \(n\),若存在 \(m\) 种不同的权值,那么在 Trie 树上子节点数为 \(2\) 的节点就有 \(m-1\) 个(因为如果一个数新加进来与 ......
题解 888G 888 CF

#交互,鸽笼原理#CF1776C Library game

题目 有一个长度为 \(m\) 的书架,以及 \(n\) 个长度 \(a_1,a_2,\dots,a_n\) Alessia 和 Bernardo 从书架上取书。每次由 Alessia 选择一个之前没选过的 \(i\), 并选择一个长度为 \(a_i\) 的区间,需要保证这个区间内的书全都没有被取过 ......
鸽笼 原理 Library 1776 game

CF596B Wilbur and Array题解

同步发布与洛谷(太懒了不想写东西直接搬过来了(((逃 ) 原题链接 简单贪心。 题意 求一个起始全为 \(0\) 的数列 \(a_1,a_2 \cdots a_n\) 每次可以选择一个数 \(i\) 使 \(a_i \cdots a_n\) 都加上或减去 \(1\),求修改成给定的序列 \(b_1, ......
题解 Wilbur Array 596B 596

CF1468A LaIS

题意简述 给出一个长度为 \(n\) 的序列 \({a_n}\) , 找出一个子序列 \({b_k}\) ,使其满足 \(\min(b_1, b_2) \leq \min(b_2, b_3) \leq ··· \leq \min(b_{k - 1}, b_k)\) ,求 \(k\) 的 最大值。 \ ......
1468A 1468 LaIS 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) ......
1672 CF

CF888F题解

分析 手玩样例发现连一条边实际上是将一个多边形分割成两个部分,而且不能在这两个部分直接连边,发现这两个部分是完全独立的,于是考虑区间 DP。 设状态 \(f_{l,r}\) 表示将 \([l,r]\) 区间连成树的方法数量。 那么存在两种转移,一种是 \(l,r\) 间不直接连边,这样中间的点都需要 ......
题解 888F 888 CF

CF 刷题计划 4

应该是 OI 退役前最后一次发「CF 刷题计划」了。 难度范围实时浮动,取决于智商浮动。 反正也不会再出模拟赛了,所以干脆都放上来吧。 难度标识(0-5 保留一位小数): 标准参考 1 一眼丁真 2 需要时间思考 3 需要题解提示 4 需要仔细阅读题解 CF1430G Yet Another DAG ......
CF

CF1586I 题解

CF1586I 题解 传送门 更好的阅读体验 简化题意:有 $n\times n$ 的网格,你需要进行黑白染色,使得每个格子的颜色恰好与 2 个与其四联通的格子的颜色相同,其中有些位置已经确定,问是否有解及是否有唯一解。 思路: 很神仙的构造题。 先从特殊的地方入手。对于 4 个角,它们只和 2 个 ......
题解 1586I 1586 CF

CF868E Policeman and a Tree

感觉,好自然啊! 想法 dp,想办法分解这个博弈的过程。发现警察会从一片叶子到另一片叶子,在叶子抓住小偷时所有小偷可以全树乱走。因此 dp:\(f_{u, i}\) 表示警察位于 \(u\),全树剩余 \(i\) 个小偷时的答案。 因为两边都绝对理性,小偷在警察离开叶子后不会移动并位于多片叶子上。考 ......
Policeman 868E Tree 868 and

Pinely Round 2 (Div. 1 + Div. 2) (CF1863)

本来开了某场远古 Div 1,然后学了一堆前置知识至今仍然不会 E。换一场写来得及吗? A. Channel 模拟,略。 B. Split Sort Description 给你一个长度为 \(n\) 的排列。 每次操作你可以选择一个数 \(x\),然后类似于快速排序地把小于 \(x\) 和大于等于 ......
Div Pinely Round 1863 CF

CF1746F Kazaee 题解

对集合的一些判断可以考虑随机化哈希。 给每个数随一个权,如果集合 \(S\) 中每个数的出现次数都是 \(k\) 的倍数,那 \(S\) 中元素的权值之和就会是 \(k\) 的倍数,否则会是一个在 \([0,k)\) 中随机的值。 也就是说如果这个集合不满足要求,我们做一次这个检测,有 \(\fra ......
题解 Kazaee 1746F 1746 CF

CF888E题解

分析 看到 \(n \leq 35\) 的数据范围就想到了 meet-in-middle。 先爆搜出对于 \(1 \sim \frac{n}{2}\) 和 \(\frac{n}{2} \sim n\) 两个下标范围内在模意义下所有的和。 然后用一个常见 trick,就是枚举第二个部分的和,然后匹配第 ......
题解 888E 888 CF

CF888D

分析 很容易想到从 \(0\) 开始枚举 \(a_i \neq i\) 的位置个数一直枚举到 \(k\) 计算每种情况下的答案加在一起即为答案。 对于 \(k\) 确定的情况,\(a_i = i\) 的位置共有 \(C_{n}^{n-k}\) 种情况,剩下的位置要保证 \(a_i \neq i\)。 ......
888D 888 CF

CF888B题解

分析 题意为选出最多的操作使机器人执行完仍停留在原地。 分为左右和上下两类,则每一类的可执行操作数都是操作次数最少的一种操作的二倍(因为正反操作都要执行才能抵消)。 直接统计每种操作的操作次数计算答案即可。 代码 #include <iostream> using namespace std; co ......
题解 888B 888 CF

CF888A题解

分析 因为一个数不可能同时大于并小于它两边的数,所以两种数的集合不存在交集。 所以分别扫一遍两种数的个数加在一起即可。 代码 #include <iostream> using namespace std; constexpr int MAXN(1000007); int a[MAXN]; int ......
题解 888A 888 CF

CF1555E题解

分析 观察到题面是求最小极差,想到 two-pointers。 按 \(w_i\) 大小排序,然后发现一个子段的子段的答案肯定不优于原子段。 和CF1777C以及NOI2016区间一样,选取合法左端点然后选取最大合法右端点。 值得注意的是,本题要求首尾相接,所以为了避免选取的线段无交集,将 \(r\ ......
题解 1555E 1555 CF

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\)。广 ......
题解 Stations Segment 1572F Beats

CF1777E题解

分析 看到求最大值最小,不难想到二分。 很容易想到二分最大可取边长度。 思考如何check。 首先如果存在一点 \(u\) 符合条件,那么我们很难判断那条边该翻哪条边不该翻,很难去check。 那么大胆假设对于每个点 \(u\),每条边的方向只会确定为一个状态。 尝试证明。 假设存在边 \(a, b ......
题解 1777E 1777 CF

CF1132C Painting the Fence 题解

@目录DescriptionSolutionCode Description 有一面长为 \(n\) 的墙以及 \(q\) 个工人,第 \(i\) 个工人粉刷 \(l_i\) 到 \(r_i\) 的墙面,现在要去掉两个工人,问剩余 \(q-2\) 个工人最多能粉刷多少墙面。 Solution 注意数 ......
题解 Painting 1132C Fence 1132

题解 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\) 的边为中间边。 根据 ......
题解 Another Maxflow Problem 903G

CF1467E Distinctive Roots in a Tree

突然发现深究一些树上问题还是挺有意思的哈。 显然对于同一种权值的任意两个结点,其两端的部分都是不合法的。 维护两个标记表示子树内均不合法与子树外均不合法即可。但相同权值的点对数量是 \(O(n^2)\) 的,我们要优化这个过程。 发现很多点对都是无用的。DFS 下去,遇到一个 \(x\) 权值的结点 ......
Distinctive 1467E Roots 1467 Tree

CF1854E Games Bundles 题解

乱搞题 设个 \(dp[i]\) 表示和为 \(i\) 的子序列个数,那么转移是容易的, \(dp[j]+=dp[j-i]\) ,然后就判下 \(dp[60]+dp[60-i]\) 是否大于 \(m\) ,发现这样子搞对于比较大的数可能达不到 \(m\) 的限制,因为这样子转移,默认的是一个数只选一 ......
题解 Bundles 1854E Games 1854

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 ......
题解 1878B 1878 CF

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\) 的树。 \ ......
Round 2016 Cup 639 VK

CF1777C题解

分析 看到题面里面的子序列觉得很恶心,如果是子段感觉就会比较好做。 如果直接填上子序列中间的空隙就可能会取一些比必须要取的数更大或者更小的数,影响我们的答案。 那么就可以直接排序,使得子序列中间的空隙的数必然 \(\geq\) 左端且 \(\leq\) 右端,不会影响我们的答案(因为极差只看最大最小 ......
题解 1777C 1777 CF

[题解]CF1223F Stack Exterminable Arrays

CCF 出的原题观摩一下。 思路 首先可以用一个 Trie 来维护。 在这里对本文中的一些变量做一下说明。 \(p\) 表示当前维护的 Trie 中,指向的元素编号。 \(t_i\) 表示在 Trie 中编号为 \(i\) 的元素在原序列中的值。 \(f_i\) 表示在 Trie 中编号为 \(i\ ......
题解 Exterminable Arrays 1223F Stack

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_ ......
Hitchhiking Baltic States 809D 809

CF1887D Split

左侧最大值小于右侧最小值,其实就是左侧的值全部小于右侧,即,我们可以在区间 \([l,r]\) 内找到一个阈值 \(x\) 和一个位置 \(i<r\),满足 \(\forall j\in[l,i],a_j\le x\) 且 \(\forall j\in(i,r],a_j> x\)。 考虑刻画出所有 ......
1887D Split 1887 CF

CF1887C Minimum Array

一个很直接的思路是,维护当前可行决策集合 \(S\in\{0,\dots ,q\}\),从 \(1\) 到 \(n\) 分别考虑每一个 \(a\),排除一些决策,最终得到答案。 既然要排除决策,我们当然需要知道对于当前的 \(a_i\),前 \(j\) 个操作之后的值都是多少,如果能得到这个,且这些 ......
Minimum 1887C Array 1887 CF

CF1887E Good Colorings

矩形的四个角颜色不同是个很难描述的条件,不妨利用行列二元关系转化,将 \((x,y)\) 颜色为 \(c\) 改为在 \(x\) 和 \(y\) 之间连接边权为 \(c\) 的边,则四角颜色不同就被我们转化为了,存在一个边权各不相同的四元环。 此时把特殊条件【初始给定 \(2n\) 个格子 \(2n ......
Colorings 1887E 1887 Good CF