cf
文章平均质量分 61
bandiaoz_cjl
这个作者很懒,什么都没留下…
展开
-
E. Increasing by Modulo
E. Increasing by Modulo题意一个长度为 nnn 的数组a,每次可以选择一部分 aia_iai ,使得 ai=(ai+1) mod ma_i = (a_i + 1)\space mod \space mai=(ai+1) mod m ,求最少需要几次操作使得这个数组单调不减。题解二分操作次数;每个数都有 midmidmid 次操作机会,保证单调递增的同时尽量让当前的数尽可能的小。代码#include <bits/st原创 2021-07-01 16:29:15 · 75 阅读 · 0 评论 -
G. Mike and Feet 思维,数据结构
G. Mike and Feet题意一个长度为 nnn 的数组,询问所有长度为 kkk 的区间最小值的最大值(k=1,2,…,nk = 1,2,\dots,nk=1,2,…,n)。题解可以换个角度考虑,求答案为 aia_iai 时,区间长度的可取范围;这个可以先把数组按照值的大小排序,然后用 set 维护每个区间,一个严格小的数可以分隔较大的数的答案,然后看看每个数所在的区间长度即可;区间长度的可取范围是 [1−len[i]][1-len[i]][1−len[i]] ,那么按照 aia_ia原创 2021-06-28 18:18:16 · 96 阅读 · 0 评论 -
Codeforces Round #726 (Div. 2) F. Figure Fixing
F. Figure Fixing题意一个 nnn 个点 mmm 条边的无向图,每个点有一个当前权值 aia_iai 和一个目标权值 tit_iti。如果 uuu 和 vvv 之间有边,那么可以把 u,vu,vu,v 的权值都加 kkk ,问能否通过有限次这样的操作,使得所有点的权值变成目标权值。题解令 ai=ai−tia_i = a_i - t_iai=ai−ti ,那么只需要让所有 aia_iai 的权值为 000 即可;每次操作所有权值的和变化 2⋅k2\cdot k2⋅k ,不原创 2021-06-25 19:25:59 · 72 阅读 · 0 评论 -
Codeforces Round #726 (Div. 2) D. Deleting Divisors
D. Deleting Divisors题意给一个正整数 nnn ,每轮可以减掉 nnn 的一个因子,但不能是 111 或 nnn 。轮到自己回合不能行动算输。Alice 先手,问谁能赢。题解如果 nnn 是一个奇数:如果 nnn 是质数那么 Alice 不能行动,Bob 获胜;否则 nnn 可以表示为两个奇数的乘积, Alice 行动之后 nnn 必定是一个偶数,并且有奇数因子(所以不可能是 222),那么 Bob 可以把 nnn 减掉一个奇数因子,这样 nnn 又变成一个奇数。所以这种情原创 2021-06-23 21:30:09 · 96 阅读 · 1 评论 -
Codeforces LATOKEN Round 1 (Div. 1 + Div. 2) E. Lost Array
E. Lost Array题意给你 nnn 个数,每次可以询问 k(1≤k≤n)k(1 \le k \le n)k(1≤k≤n) 个数的异或和,要求用最少的询问得到所有 nnn 个数的异或和。如果没有可能的方案,则输出 -1。题解异或奇数次等价异或一次,异或偶数次等价于没有异或;这个问题等价于一个经典的问题,有 nnn 枚正面朝上的硬币,每次可以选择 kkk 个硬币翻转,怎么用最少的操作次数让所有硬币反面朝上;枚举翻转中正面朝上的个数即可。代码#include <bits/stdc原创 2021-06-21 16:20:15 · 88 阅读 · 0 评论 -
Codeforces LATOKEN Round 1 (Div. 1 + Div. 2) D. Lost Tree
D. Lost Tree题意先给定一个树,你每次可以询问某个点到 nnn 个点的距离,要求通过最多 $\left \lceil \frac{n}{2} \right \rceil $ 次询问,得到树的结构。题解以 111 作为根节点,先询问根到其他点的距离,就得到了每个点的深度;把所有 nnn 个点染两种颜色,也就是深度奇偶相同的点是同一种颜色;如果距离为 111 那么两个点之间有一条边;询问颜色数少的节点。代码#include<bits/stdc++.h>#define原创 2021-06-21 09:23:49 · 130 阅读 · 0 评论 -
Codeforces Round #724 (Div. 2) E. Omkar and Forest
E. Omkar and Forest题意一个矩阵,要求矩阵的相邻数字之差最大为 111 ,如果数字非零,那么至少严格大于其中一个相邻的数字。给出一个矩阵,要求填满这个矩阵,问有几种方案。题解在给出的 #的子集中选择一部分为0,那么剩下的非零的值是确定的,非零的单元值等于到最近的0的距离。对于一个非零单元,这个单元到最近的 0 的值为 ddd,那么这个非零单元的值不可能大于 ddd ;这个非零单元的值不可能大于 ddd:假设大于 ddd ,从这个单元格到最近的0,每次移动一步最多减一,所以单元原创 2021-06-20 01:01:15 · 82 阅读 · 0 评论 -
Educational Codeforces Round 107 (Rated for Div. 2) D. Min Cost String
D. Min Cost String题意一个字符串的权值等于同时满足 si=sjs_i=s_jsi=sj 和 si+1=sj+1s_{i + 1} = s_{j + 1}si+1=sj+1 的索引对的数量。请用 kkk 的字母构造长度为 nnn 的最小权值字符串。题解可以用 kkk 字母构造长度为 k⋅kk \cdot kk⋅k 的权值为 000 的字符串;如果 k⋅k<nk \cdot k < nk⋅k<n ,那么复制前面的字符串即可。代码#include<原创 2021-06-09 20:51:25 · 76 阅读 · 0 评论 -
Educational Codeforces Round 96 (Rated for Div. 2) E. String Reversal
E. String Reversal题意给出一个由小写字母组成的字符串,如果通过交换相邻字母的操作将这个字符串翻转,最少需要多少次操作。题解对于相同的字母,原本在左边的,一定会通过交换操作放到左边;找到原始字符串的每个字母翻转后对应的位置,得到一个长度为 nnn 的排列;排列的逆序对个数即为最少的操作次数;因为每次交换操作一定会使这个排列的逆序对个数减少 111 ,最终翻转完成后逆序对个数为 000。代码#include<bits/stdc++.h>#define rep原创 2021-06-07 20:50:44 · 56 阅读 · 0 评论 -
Codeforces Round #723 (Div. 2) D. Kill Anton
D. Kill Anton题意给出一个只有 444 个字母组成的字符串 SSS,请对这个字符串重新排列得到字符串 TTT,使得对字符串 TTT 需要做最多次变换得到字符串 SSS 。每次变换可以交换相邻的两个字母。题解从 TTT 到 SSS 的变换过程,一定不会交换相邻相同的字母;从 TTT 到 SSS 的变换次数等于从 SSS 到 TTT 的变换次数;TTT 一定是相同的字母连续出现,一共有 444 种字母,所以一共有 4!=244!=244!=24 种可能的答案,选出变换次数最多的即可。原创 2021-06-06 19:45:11 · 149 阅读 · 0 评论 -
Codeforces Round #707 C. Going Home
C. Going Home题意给 n(1≤n≤2⋅105)n(1\le n \le 2\cdot 10^5)n(1≤n≤2⋅105) 个数,每个数 1≤ai≤2.5⋅1061\le a_i \le 2.5\cdot 10^61≤ai≤2.5⋅106 ,要求找到四个不同的数 x,y,z,wx,y,z,wx,y,z,w ,使得 ax+ay=az+awa_x+a_y=a_z+a_wax+ay=az+aw 。不能找到则输出 NO。题解注意到 aia_iai 的范围为 1≤ai≤2.5⋅1061原创 2021-03-18 21:25:13 · 135 阅读 · 0 评论 -
Codeforces Round #705 (Div. 2) C. K-beautiful Strings
C. K-beautiful Strings题意给一个长度为 n(1≤n≤105)n(1\le n \le 10^5)n(1≤n≤105) 的字符串,要求找到字典序最小且字典序大于等于当前字符串的长度为 nnn 的字符串,满足所有字母出现次数被 kkk 整除。题解如果 nnn 不是 kkk 的倍数,那么答案显然不存在,否则答案一定存在;首先检查自身是否符合条件,如果不符合,从后往前贪心。每次把当前遍历到的字母加一,这时候后面的字符就是任意的,结合前缀检查是否可能满足条件;如果可以满足条件,计算原创 2021-03-16 17:37:40 · 111 阅读 · 0 评论 -
Codeforces Round #706 B. Let‘s Go Hiking(博弈)
B. Let’s Go Hiking题意有一个长度为 nnn 的排列。首先Qingshan选择一个数 aaa ,Daniel选择另一个数 bbb 。Qingshan先手,每次移动到相邻的数 a′(a′<a,a′!=b)a'(a'<a,a'!=b)a′(a′<a,a′!=b),然后Daniel移动到相邻的数 b′(b′>b,b′!=a)b'(b'>b,b'!=a)b′(b′>b,b′!=a)问Qingshan初始有多少种选择可以必胜。题解把这个排列分割成若干单原创 2021-03-10 23:15:48 · 236 阅读 · 0 评论 -
Codeforces Round #695 (Div. 2) F. Strange Housing (树上差分)
F. Strange Housing题意给一棵 nnn 个节点的树,每个节点都有一个权值。统计有多少个满足以下要求的节点:从这个点出发的任意路径中,没有两个相同的权值出现在同一路径。题解很难直接求出满足要求的节点,但是我们可以标记不符合要求的点。如果遍历到点 uuu ,并且在 a[u]a[u]a[u] 没有全部出现在以 uuu 为根的子树中,那么 uuu 的子树都不满足,因为一定有一条路径经过 uuu 和另一个权值等于 a[u]a[u]a[u] 的点。如果遍历到点 uuu ,并且在以 uuu原创 2021-01-16 15:51:09 · 65 阅读 · 0 评论 -
Codeforces Round #694 (Div. 2) F. Strange Housing (贪心思维)
F. Strange Housing题意有 nnn 个点和 mmm 条边,对点进行染色。要求一条边的两个点不能都染色,并且删除两端都没有染色的边之后,图连通。请给出一种染色方案。题解暴力贪心即可。首先如果图连通,则一定存在答案,不存在答案。BFS遍历所有的点。如果当前节点没有染色,且相邻的所有节点没有染色,就染色,否则不染色。如果当前节点已经染色,那么把相邻的所有节点标记不染色。代码#pragma region#include <algorithm>#incl原创 2021-01-14 21:36:50 · 204 阅读 · 0 评论 -
Codeforces Round #694 (Div. 2) D. Strange Definition 思维
D. Strange Definition题意如果 xxx 和 yyy 满足 lcm(x,y)gcd(x,y)\frac{lcm(x,y)}{gcd(x,y)}gcd(x,y)lcm(x,y) 是完全平方数,则 xxx 和 yyy 相邻。给一个长度为 nnn 的数组,满足 1≤ai≤1061\le a_i\le 10^61≤ai≤106 。每一秒过后,数组每个元素 aia_iai 都会替换为自身与所有与 aia_iai 相邻的数的乘积。定义 did_idi 为 aia_iai 相邻的元素的原创 2021-01-13 21:07:44 · 117 阅读 · 0 评论 -
Codeforces Round #695 (Div. 2) D. Sum of Paths(dp)
D. Sum of Paths题意一共有 nnn 个格子,每个格子都有一个值 aia_iai。一开始可以在任意一个格子放置一个机器人,机器人精确的走 kkk 步经过 k+1k+1k+1 个格子,走过一个格子产生 aia_iai 的贡献,问所有不同的走法产生的总贡献,有 qqq 次询问,每次询问都可以修改一个格子的值。题解先预处理出所有走法每个格子会被走的次数总和,然后每次询问 O(1)O(1)O(1) 计算即可。dp[i][j]dp[i][j]dp[i][j] 表示第 jjj 步走到第 i原创 2021-01-11 23:56:33 · 116 阅读 · 0 评论 -
E. Apollo versus Pan 拆位位运算
E. Apollo versus Pan题意给 nnn 个数 xi(1≤i≤n)x_i(1\le i \le n)xi(1≤i≤n),求 ∑i=1n∑j=1n∑k=1n(xi&xj)⋅(xj∣xk)\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^{n}(x_i\&x_j)\cdot(x_j|x_k)∑i=1n∑j=1n∑k=1n(xi&xj)⋅(xj∣xk)。题解首先化简式子KaTeX parse error: No suc原创 2021-01-08 13:08:50 · 166 阅读 · 0 评论 -
Codeforces Round #692 (Div. 1) C. Poman Numbers (贪心)
C. Poman Numbers题意给定一个字符串和一个函数 f(S)f(S)f(S)。$f(S)=\begin{cases}2^{pos(S[1])} & |S|=1\-f(S(1,m))+f(S(m+1,|S|)) &|S|>1\end{cases} $其中 pos(c)pos(c)pos(c) 表示字母 ccc 相对 a 的位置。解法题目可以看作字符串的每个字母都代表着一个值:2pos(S[i])2^{pos(S[i])}2pos(S[i]) ,然后所有值对原创 2020-12-22 12:02:58 · 144 阅读 · 1 评论 -
Codeforces Round #692 Div1 B. Grime Zoo(贪心)
B. Grime Zoo题意给一个由0、1、? 组成的字符串,子序列01会产生 xxx 的贡献,子序列10 会产生 yyy 的贡献,要求把所有的 ? 变成 0 或 1,且总贡献最小,求最小贡献。解法假设有 c0c_0c0 个 ? 变成 0 ,有 c1c_1c1 个 ? 变成 1 。即每个数字的数量确定了,那么可以发现,子序列00的个数是确定的,子序列11 的个数是确定的,那么 01 和 10 的个数之和是定值,如果 x>yx>yx>y ,那么把 111 尽可能的放在前面,把 0原创 2020-12-22 09:44:02 · 553 阅读 · 0 评论 -
Codeforces Round #687 Problem - E.New Game Plus!(贪心)
Codeforces Round #687 Problem - E.New Game Plus!题意给了 nnn 个数,有一个临时变量 xxx ,初值为 000 ,每次可以任选一个数 aia_iai ,将 aia_iai 加到 xxx 中,然后 xxx 对答案做一次贡献。你有 kkk 次清空 xxx 的机会,问最终答案的最大值是多少。解法有 kkk 次清空的操作,那么就可以看作这 nnn 个数被分成了 k+1k+1k+1 个组,假设一个组有 bbb 个元素,那么第 iii 个元素对答案的贡献次数原创 2020-11-30 19:41:56 · 244 阅读 · 0 评论 -
D. XOR-gun
Problem - D. XOR-gun- Codeforces题意给 nnn 个非严格单调递增的数,每次你可以选择两个相邻的数 ai,ai+1a_i,a_{i+1}ai,ai+1,把这两个数变为一个数 ai xor ai+1a_i\space xor \space a_{i+1}ai xor ai+1 ,问最少进行几次操作可以让这个序列不满足非严格单调递增。解法显然选择的数一定是一个连续的区间,也就是选择一个最短的区间 [l,r][l,r][l,r]原创 2020-11-29 18:50:45 · 221 阅读 · 0 评论 -
Codeforces Round #686 (Div. 3) E. Number of Simple Paths
Problem - E. Number of Simple Paths - Codeforces题意给一个 nnn 个点 nnn 条边的联通图,问有多少条简单路径。解法显然这是一个基环树,可以看作一个环连了很多棵小树。小树内部任取两点路径数为 111 ,但是如果经过那个环,就会有两条简单路径。所以总的简单路径数为 n⋅(n−1)−∑szi⋅(szi−1)n\cdot(n-1)-\sum sz_i\cdot(sz_i-1)n⋅(n−1)−∑szi⋅(szi−1) ,szisz_iszi 表示每棵原创 2020-11-25 12:32:05 · 325 阅读 · 2 评论 -
Codeforces Round #685 (Div. 2) F. Nullify The Matrix 博弈
Problem - 1451F. Nullify The Matrix题意有一个 n⋅mn\cdot mn⋅m 的矩阵,元素均为非负数。两个人轮流对矩阵进行操作:先选一个非零点 (r1,c1)(r_1,c_1)(r1,c1) ,一个点 (r2,c2)(r_2,c_2)(r2,c2) ,满足 r2≥r1,c2≥c1r_2\ge r_1,c_2\ge c_1r2≥r1,c2≥c1 。将 ar1,c1a_{r_1,c_1}ar1,c1 的值减小为 [0,ar1,c1−1][0,a_原创 2020-11-23 13:43:41 · 130 阅读 · 0 评论 -
Codeforces Round #685 (Div. 2) 1451E2 Bitwise Queries 交互
Problem - 1451E2 - Codeforces题意交互题。一个长度为 nnn 的数组,要求在不超过 n+1n+1n+1 次询问,计算出数组的所有元素。每次可以询问下标为 i,ji,ji,j 的两个数的与、或、异或。nnn 是 222 的整数次幂,0≤ai≤n−10\le a_i \le n-10≤ai≤n−1 。解法如果可以得到 a1a_1a1 的值,就可以通过 n−1n-1n−1 次询问异或,来得到剩下 n−1n-1n−1 的数。a1 xor ai=x,ai原创 2020-11-22 22:12:33 · 187 阅读 · 0 评论 -
Codeforces Round #683 Frequency Problem (Easy Version)
Codeforces Round #683 Frequency Problem (Easy Version)题意一个长度为 n(1≤n≤2⋅105)n(1\le n\le 2\cdot 10^5)n(1≤n≤2⋅105) 的数组,数组元素 1≤ai≤min(n,100)1\le a_i \le min(n,100)1≤ai≤min(n,100) 。求一个最长的子区间满足这个子区间的众数不唯一。解法首先如果数组有多个众数,那么直接输出 nnn ;当原数组的众数唯一的情况,有一个结论:原数组的众数原创 2020-11-18 21:23:16 · 124 阅读 · 0 评论 -
Codeforces Round #684 (Div. 2) E. Greedy Shopping
Codeforces Round #684 (Div. 2) E. Greedy Shopping题意给一个非严格递减的整数数组 a1,a2,…,ana_1,a_2,\dots,a_na1,a2,…,an ,表示商店的 nnn 个商品的价格。请处理 qqq 个两种类型的查询:1 x y1\space x \space y1 x y ,表示将标号为 1,2,…,x1,2,\dots,x1,2,…,x 的商品价格更改为 max(ai,y)max(a_i,y)原创 2020-11-18 16:02:42 · 172 阅读 · 1 评论