tripartite complete 1228d cf

CF1051F The Shortest Statement

很经典的题了,不如说这种带有\(m-n\)很小这类限制的题的处理方法基本都如出一辙 由于图连通因此先搞个生成树出来,考虑非树边的数量很少,因此对于每组询问可以先用LCA求出两点间只经过树边的最短距离 考虑每条树边会如何影响答案,其实无非就是会经过这条树边的某个端点罢了,因此我们把非树边的端点都拿出来 ......
Statement Shortest 1051F 1051 The

CF506D Mr. Kitayuta's Colorful Graph

好久没更新这个单题系列了,主要是最近没啥CF比赛空闲时间又少,今天忙里偷闲写了两个题 这个题就比较典了,两点是否连通一般都是想到并查集维护,现在的问题是要对每种颜色的边把贡献算清楚 很容易想到枚举所有颜色的边,每次求出所有连通分量后遍历一遍询问统计答案,这样正确性显然但复杂度是\(O(m\times ......
Kitayuta Colorful Graph 506D 506

「CF1491H」Yuezheng Ling and Dynamic Tree

\(\text{「CF1491H」Yuezheng Ling and Dynamic Tree}\) \(\text{Solution}\) 根据弹飞绵羊的思路,考虑分块维护一个 \(\text{top}(u)\) 表示 \(u\) 第一个不在当前块的祖先,设块长为 \(O(B)\),考虑如何求 \ ......
Yuezheng Dynamic 1491H 1491 Ling

题解 CF600D Area of Two Circles' Intersection

题意简述 给出两个圆的圆心和半径,求两个圆的面积交。 思路 首先通过两圆半径和圆心的距离判断两圆是相离,包含还是相交。相离面积交为 \(0\),包含答案即为较小的圆的面积。当包含时相当于求两个弓形的面积。(见下图) 由正弦定理有: \[\begin{aligned} S_{\text{弓}ACD}& ......
题解 Intersection Circles 600D Area

题解 CF249E Endless Matrix

题意简述 在上图所示的矩阵中求一个子矩形的元素和。 思路 先可以考虑差分。然后问题转化为求以 \((x,y)\) 为右下角的矩形的元素和。先考虑 \(x\leq y\) 的情况。\(x>y\) 的情况同理可推。先可以算出以 \((x,x)\) 为右下角的,答案为 \(\sum\limits_{i=1 ......
题解 Endless Matrix 249E 249

代码源:a-good string(CF1385D,分支)

传送 点击查看代码 #include<bits/stdc++.h> using namespace std; char s[131080]; int _solve(int L,int R,char x) { if(L==R) return s[L]!=x; int M=L+(R-L)/2; int ......
分支 代码 a-good string 1385D

【DP】CF1829G Hits Different 题解

CF1829G 先将整个塔变为一个直角三角形的模样。这时就可以很好的用数组表示了,这时发现答案就是一个倒着的等腰直角三角形的和(不考虑边界)。 考虑预处理。 令 \(a_i\) 为点 \(i\) 所在的行数,\(f_i\) 表示 \(i\) 号点的答案,\(g_i\) 表示 \(i\) 和 它正上方 ......
题解 Different 1829G 1829 Hits

【分治】CF429D Tricky Function 题解

CF429D 令 \(sum_i\) 表示 \(\sum \limits_{j=1}^{i} {a_j}\)。 则 \(g(i, j) = (sum_j - sum_i)\)。 \(f(i, j) = (i - j)^2 + g(i, j)^2 = (i - j) ^ 2 + (sum_i - su ......
题解 Function Tricky 429D 429

【二分图】CF1139E Maximize Mex 题解

CF1139E 翻译中有一句话:校长将会从每个社团中各选出一个人。 就是一些人被分为一组,从每组中选一些人出来。 这就很容易想到通过二分图的匹配。 \(\operatorname{mex}\) 运算有一个显而易见的贪心:枚举每个值能否被匹配,第一个找不到的值就是答案。 由于 \(\operatorn ......
题解 Maximize 1139E 1139 Mex

「CF848D」Shake It!

\(\text{「CF848D」Shake It!}\) \(\text{Solution}\) 我们可以发现题目中的图可以拆分为若干个递归的子结构,可以对这些子结构考虑 \(\text{DP}\),设 \(f(i,j)\) 表示考虑对一个子结构 \((s,t)\) 加入 \(i\) 个点后形成的图 ......
Shake 848D 848 CF It

《CF gym Reverse LIS》解题报告

原题链接 一开始看到这题就很像模拟费用流,不过立马就放弃了,然后之后就再也没想过这个思路了。。。 正解是模拟费用流,先讲一下答案长什么样,把 \(0\) 的权值记为 \(1\) , \(1\) 的权值记为 \(-1\) ,那么我们答案就是要选一段前缀和 \(k\) 段不相交的区间的最大值加上 \(1 ......
Reverse 报告 gym LIS

《CF1824E LuoTianyi and Cartridge》 解题报告

好题。 模拟赛出了这题,抽象。 初步化简: 由于 \(\min (A,C)\) 不好处理,我们考虑从大到小加边加点,或者从小到大删边删点。 一般题目是考虑加边加点好操作一点,这题是考虑删边删点好操作。 然后我们记当前枚举的 \(\min (A,C)\) 的最小值是多少,记为 \(x\) 。然后称大于 ......
LuoTianyi Cartridge 报告 1824E 1824

[题解] CF1245D - Shichikuji and Power Grid

CF1245D - Shichikuji and Power Grid 题目传送门 题意 在一个网格图中,有 \(n\) 个城市。目标是使得 \(n\) 个城市都通电。 对于一个城市有电,要么选择在其位置建立发电站,要么和另一个有电的城市连线。 对于城市 \(i\) ,在其位置建立发电站的费用为 \ ......
题解 Shichikuji 1245D Power 1245

CF1878E Iva & Pav

思路 要求从一个点开始最远可以选择那个点使得两点之间的数字的与大于等于 \(k\),最开始想到的是提前预处理出每个点往后若干位的与,因为与只可能变小不可能变大,所以可以二分找到最远的位置,但是这样无论时间还是空间都会爆掉,所以我们考虑优化一下这个办法。 既然不能把每个点的后面的位置的与全部算出来,那 ......
1878E 1878 Iva amp Pav

代码源:CF 1355E(整数三分)

传送 点击查看代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; int a[100010]; int n,A,R,M; ll f(int x) { ll y=0,z=0;//y表示需要增加的次数,z表示需要减少 ......
整数 代码 1355E 1355

CF1010C Border 题解

题目传送门 前置知识 最大公约数 | 裴蜀定理 简化题意 给定一个长度为 \(n\) 的序列 \(a\),求能用 \(r=(\sum\limits_{i=1}^{n}d_ia_i) \bmod k\) 表示的不同的 \(r\) 的个数及所有情况,其中对于每一个 \(i(1 \le i \le n)\ ......
题解 Border 1010C 1010 CF

CF131D Subway 题解

题目传送门 前置知识 强连通分量 | 最短路 解法 考虑用 Tarjan 进行缩点,然后跑最短路。 缩点:本题的缩点有些特殊,基于有向图缩点修改而得,因为是无向图,所以在 Tarjan 过程中要额外记录一下从何处转移过来,防止在同一处一直循环。 基环树上找环还有其他方法,这里仅讲解使用 Tarjan ......
题解 Subway 131D 131 CF

cf1110D. Jongmah

cf1110D. Jongmah 如果能够发现一点转化的话就简单很多 比如说最后的答案里出现了 三个(a,a+1,a+2),我们可以将它看作是(a,a,a),(a+1,a+1,a+1),(a+2,a+2,a+2) 也就是每种三元组(除了(a,a,a))最多只会出现两次 那么每种数最多有6个是个其它数 ......
Jongmah 1110 cf

【bitset】【线段树】CF633G Yash And Trees 题解

CF633G 简单题。 先看到子树加和子树质数个数和,果断转换为 dfs 序进行处理。 既然有区间求和,考虑线段树。 若对于每一个节点维护一个 \(cnt\) 数组,用二进制数 \(x\) 来表示,即当 \(cnt_i = 1\) 时第 \(i\) 位为 \(1\)。设当前节点为 \(u\),左右子 ......
线段 题解 bitset Trees 633G

【线段树合并】CF1805E There Should Be a Lot of Maximums 题解

CF1805E 待补:有另解 看到维护树上问题,可以想到线段树合并。 但直接维护显然不行,要一点技巧。 发现 \(val\) 的出现次数 \(cnt_{val}\) 如果 \(\ge 3\),那么一定是一个候选项,若 \(cnt_{val} = 1\),那么一定不能作为候选项。 于是可以用权值线段树 ......
线段 题解 Maximums Should 1805E

【图论】【寻找性质】CF1151E Number of Components 题解

CF1151E 发现每一个 \(f(l, r)\) 中的连通块总是一条链(一棵树)。 那么此时连通块的数量就等于点的数量减去边的数量。 先考虑点的总数,一个价值为 \(a_i\) 的点一定是在 \(l \leqslant a_i\) 且 \(r\geqslant a_i\) 的 \(f(l, r)\ ......
题解 Components 性质 Number 1151E

CF1850H

带权并查集板题 维护到根的距离 #include <iostream> #include <algorithm> #include <cstring> #include <vector> #include <queue> using namespace std; const int N =2e5+1 ......
1850H 1850 CF

CF1249(Div. 3) 题解(A to D)

\(\texttt{E F}\) 忘(不)记(会)写了。 A Yet Another Dividing into Teams 题解 题目大意 有一个长度为 \(n\) 的序列 \(a_1,a_2,\cdots,a_n\),将他们分为若干组,使得每一组没有两个数的差为 \(1\),使分的组数尽可能少。 ......
题解 1249 Div CF to

Letter Picking (CF D) (区间DP, 暴力)(0,1,2 Alice 平 bob ,尽可能小,尽可能大)

思路 : 区间dp(区间DP的时间复杂度 不一定是 n^3 ,可能是 n^2 更具题意) 直接题 直接 区间dp, 0 Alice 赢 1 平局 2 Bob 赢 (于是 alice 尽可能小, bob 尽可能大) alice 选 l , bob 可以选 l+1, 或者 r alice 选 r , b ......
尽可能 区间 暴力 Picking Letter

Luogu CF1133B 题解

这道题其实很简单 要让两数和为 \(k\) 的倍数,需要满足以下两条件之一: 两数都是 \(k\) 的倍数 两数的余数和为 \(k\) 因此,我们可以先统计出余数 再按上述条件算出共有多少组,即可得到答案 注意: 当 \(k\) 为偶数时,余数为 \(k/2\) 的数要两两配对,不要多算 这里统计的 ......
题解 Luogu 1133B 1133 CF

Luogu CF755B 题解

这题其实不难。 两人最佳的方案就是先说对方会的词。 不难证明,设先手会说 \(n\) 个单词,后手会说 \(m\) 个单词, 若 \(n>m\),则先手胜,若 \(n<m\),则后手胜。 那如果 \(n=m\) 呢? 假设两人都会说的单词数为 \(k\), 那么一番推理发现,当两人说了 \(k-1\ ......
题解 Luogu 755B 755 CF

Luogu CF1174C 题解

这道题其实不难。 \(\gcd(i,j)=1\),其实就是 \(i\) 与 \(j\) 互质。 如果 \(i\) 与 \(j\) 不互质,那么我们一定要让 \(a_i\) 与 \(a_j\) 相同,只有这样,才能使 \(a\) 序列中的最大值最小化。 所以,我们可以使用埃氏筛法,当筛到质数时,给它和 ......
题解 Luogu 1174C 1174 CF

Luogu CF1469B 题解

这道题其实并不难。 题目大意是这样的:已知两个序列 \(r\) 和 \(b\),求出合并后的最大前缀和。 很好发现:答案就是 \(r\) 和 \(b\) 各自的最大前缀和之和。 但要注意:\(r\) 和 \(b\) 可以什么都不取,因此 \(maxa\) 和 \(maxb\) 初始要赋值为 \(0\ ......
题解 Luogu 1469B 1469 CF

Luogu CF1174C 题解

这道题其实不难。 \(\gcd(i,j)=1\),其实就是 \(i\) 与 \(j\) 互质。 如果 \(i\) 与 \(j\) 不互质,那么我们一定要让 \(a_i\) 与 \(a_j\) 相同,只有这样,才能使 \(a\) 序列中的最大值最小化。 所以,我们可以使用埃氏筛法,当筛到质数时,给它和 ......
题解 Luogu 1174C 1174 CF

CF400C 题解

这道题其实不难,只是一道非常简单的模拟题。 我们发现,每顺时针转动 \(4\) 次、镜面对称 \(2\) 次、逆时针旋转 \(4\) 次,就变回原来的样子了。 所以,在操作前,我们可以让 \(x\gets x\bmod4\),\(y\gets y\bmod2\),\(z\gets z\bmod4\) ......
题解 400C 400 CF