multiplication sorting 1861d cf

CF1856B Good Arrays

题意简述: 给定一个序列 \(a\),我们定义一个序列 \(b\) 是好的当且仅当对于 \(1\dots n\) 内的每一个 \(i\),\(a_i\neq b_i\) 且 \(\sum_{i=1}^na_i=\sum_{i=1}^nb_i\)(\(a_i\),\(b_i\) 均为正整数)。 现在有 ......
Arrays 1856B 1856 Good CF

CF1857B Maximum Rounding

题目大意 给定一个自然数 \(n\),可以对任意一位进行四舍五入,可以进行任意次,求能得到的最大数。 \(n\) 的长度不超过 \(2\times 10^5\),没有前导零。 solution 首先,选择四舍五入的数一定 \(\ge 5\),不然对答案没有贡献。 其次,高位的数可能会受到低位的进位, ......
Rounding Maximum 1857B 1857 CF

CF1857F Sum and Product

根据题意我们有:\(b=a_i+a_j\),\(c=a_i\times a_j\)。 可以发现 \(a_i\) 和 \(a_j\) 是一元二次方程 \(x^2-bx+c=0\) 的根。 那么就可以根据求根公式 \(x=\dfrac{-b\pm \sqrt{b^2-4ac}}{2a}\) 来求出 \( ......
Product 1857F 1857 Sum and

CF1844E Great Grids 题解

Description 定义一个矩形 \(a\) 是好的,当且仅当其满足以下条件: 矩形中每一个元素 \(x\) 都为 \(A,B,C\) 其中之一 每一个 \(2\times 2\) 的子矩形都必须包含三个不同的字符 共用一条边的两个元素不相等 给定 \(k\) 个限制条件,限制条件分为两类: \ ......
题解 1844E Great Grids 1844

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

AtCoder Grand Contest 057 E RowCol/ColRow Sort

洛谷传送门 AtCoder 传送门 首先考虑一个经典的套路:转 \(01\)。具体而言,我们考虑若值域是 \([0, 1]\) 怎么做。 发现可以很容易地判定一个 \(A\) 是否合法。设矩阵第 \(i\) 行的和为 \(r_i\),第 \(j\) 列的和为 \(c_j\),那么合法当且仅当 \(A ......
AtCoder Contest ColRow RowCol Grand

std::vector::sort

std::sort(vector.begin(),vector.end(),[](int a,int b){ if(a==1)return false;//a为1就将这个1排在最后,因为返回的是false if(b==1)return true;//还是将1排在最后 return a>b;//降序排 ......
vector sort std

【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

关于排序函数sort的一些思考

关于排序函数sort的一些思考 c++ 升序 sort(a,a+n,cmp) bool cmp(int b, int c){ return b < c; } cmp 是一个比较函数 cmp(b, c)是当b < c时返回true,表示不交换位置 java //不能使用基本数据类型 Integer[] ......
函数 sort

【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