codeforces 题解
文章平均质量分 65
个人题解
zzqwtc
blog dot zzqwtc dot com
展开
-
Codeforces Round #750 (Div. 2) - E. Pchelyonok and Segments (dp)
E. Pchelyonok and Segments题意给你一个数组,找到 k 个不重叠的子段,第一段 [l1,r1l_1,r_1l1,r1] 的长度为 k,第二段 [l2,r2l_2,r_2l2,r2] 的长度为 k - 1 … 第 k 段[lk,rkl_k,r_klk,rk] 的长度为 1,其中 ri−1<lir_{i - 1} <l_iri−1<li,这些子段满足 sum(l1,r1)<sum(l2,r2)<......sum(lk,rk)sum(l_原创 2021-10-26 22:39:39 · 3321 阅读 · 0 评论 -
2013, Samara SAU ACM ICPC Quarterfinal Qualification Contest C.Victor‘s Research
Victor’s Research题意给定一个长度为 nnn 的数组 找出有多少子数组的和为 kkk思路先求前缀和数组 sum[]sum[]sum[] 题目要求可以表示为求有多少个r、lr、lr、l 满足 sum[r]−sum[l]==ssum[r] - sum[l] == ssum[r]−sum[l]==s (l<rl < rl<r)转换一下可以得到:sum[l]==sum[r]−ssum[l] == sum[r] - ssum[l]==sum[r]−s即求对于当前的 sum原创 2021-04-30 23:57:15 · 3448 阅读 · 1 评论 -
Educational Codeforces Round 107 (Rated for Div. 2) D - Min Cost String
D. Min Cost String题意字符串的代价定义为 对于一对索引i,j(1≤i<∣s∣)i,j (1 \leq i < |s|)i,j(1≤i<∣s∣) $s_i = s_j $ 并且 si+1=sj+1s_{i + 1} = s_{j + 1}si+1=sj+1 满足条件的不同i,ji,ji,j 的数量让你用前 kkk 个字母构造一个长度为 nnn 的字符串 并且使得 字符串的代价最小思路贪心地考虑 我们每次为当前字母 xxx 选择下一个字母 yyy 的时候 找到原创 2021-04-13 22:19:21 · 3387 阅读 · 0 评论 -
CodeForces Round #713 (Div. 3) F - Education (贪心)
F - Education题意有一个人 为了存够 ccc 元 每一天有两种操作可以选择在当前职位工作一天并拿到 a[i]a[i]a[i] 元钱如果当前存款多于 b[i]b[i]b[i] 可以升职到下一个职位(下一个职位的日工资更高)a[i]a[i]a[i] 和 b[i]b[i]b[i] 都是递增数组问:至少要多少天才能存够 ccc 元思路因为 a[i]a[i]a[i] 是递增的 所以如果要升职就要尽早升职遍历 a[i]a[i]a[i] 计算出当前工资下需要多少天 取最小值 存在 min原创 2021-04-11 21:22:21 · 3378 阅读 · 0 评论 -
CodeForces - 1481C - Fence Painting (贪心)
Fence Painting题意按顺序使用 ccc 数组中的元素 将 aaa 数组 变成 bbb 数组 问是否可能,若可能 输出 ccc 中每个元素应该放在 aaa 中的哪个位置思路先找到哪些元素需要修改 存在 qqq 里对于 ccc 中最后一个元素 c[m]c[m]c[m] 有以下三种情况 1.需要修改的数中有 c[m]c[m]c[m] 2.需要修改的数中没有 c[m]c[m]c[m] 但是不需要修改的数中有 c[m]c[m]c[m] 3.bbb 中没有 c[m]c[m]c[m]用原创 2021-03-14 13:06:43 · 3500 阅读 · 0 评论 -
CodeForces - 1394A - Boboniu Chats with Du (贪心 + 枚举)
Boboniu Chats with Du题意nnn 个快乐因子有两种, 一种大于 mmm ,一种小于等于 mmm ,某一天选了第一种时 ,接下来的 ddd 天(不包括选的这一天) 都会被禁言,不能累加别的快乐因子。若选择了第二种则没有影响 ,问怎样选择才能使 nnn 天的快乐因子和最大思路枚举选多少个第一种快乐因子即可 首先若选第一种快乐因子肯定选大的,因为选了后同样都是禁言 ddd 天,第二种快乐因子也类似 能选就选大的,所以先将两种按降序排序,然后枚举选多少次第一种快乐因子,将 resresr原创 2021-02-27 23:20:59 · 3254 阅读 · 3 评论 -
CodeForces - 1401D - Maximum Distributed Tree (贪心 + 树上dfs)
Maximum Distributed Tree题意为一棵树的边添加权值 要求如下权值大于 000所有边权值之积等于 kkk边权值中 111 的个数尽可能少kkk 以质因数分解的形式给出求∑i=1n−1∑j=i+1nf(i,j)\sum\limits_{i=1}^{n-1} \sum\limits_{j=i+1}^n f(i,j)i=1∑n−1j=i+1∑nf(i,j)的值最大是多少 其中 f(u,v)f(u,v)f(u,v) 表示从 uuu 到 vvv 的简单路径上边的权值之和思路原创 2021-02-24 23:15:09 · 3238 阅读 · 0 评论 -
CodeForces - 1400B - RPG Protagonist (贪心)
RPG Protagonist题意一个人和他的追随者 分别可以携带重量为 ppp fff 的物体每把剑重 sss 每个战斧重 www 有 cntscnt_scnts 把剑 cntwcnt_wcntw 把战斧问 两个人最多能带走多少件武器思路首先我们可以知道,有可能不能使得重量恰好为 ppp 和 fff 所以会有浪费 那么浪费多少呢?不容易求解,但是,剑和战斧的数量只有 2e52e52e5,还可以知道优先拿重量小的可以多拿,所以我们可以贪心的枚举 ppp 会拿多少把质量较小的武器(比如是剑)原创 2021-02-24 23:36:22 · 3389 阅读 · 0 评论 -
CodeForces - 1406C - Link Cut Centroids (树的重心)
Link Cut Centroids留个坑 明天早起补????题意思路代码原创 2021-02-23 00:44:02 · 3268 阅读 · 0 评论 -
CodeForces - 1430E - String Reversal (贪心 + 树状数组求逆序数)
String Reversal题意对于一个字符串 每次可以交换相邻的两个字符 问 最少经过多少次操作后能将原来的字符串倒序思路对于样例 aaaza 倒序后应该是 azaaa 从最后一个字符开始看 需要有一个 aaa 移到最后面,因为源字符串中有多个 aaa 显然 把下标最大的 aaa 移到最后花费的操作次数最小操作前下标 123451234512345 操作后下标 142351423514235 逆序数恰好为 222 所以大胆假设 不用求证(不是) 本题即为按照上面规得到新的下标然后求逆序数即可原创 2021-02-19 23:29:01 · 3258 阅读 · 0 评论 -
CodeForces - 1430D - String Deletion (贪心 + 双指针)
String Deletion题意每次你可以从这个 010101 字符串中删除一个字符 ,然后如果字符串不为空,系统则删除由相同字符组成的最大长度前缀 问最大操作数是多少思路有两种情况当前字符串由相同字符组成的前缀长度大于1 那么肯定选择删除前缀中的一个字符比较好 因为如果选择删除后面的字符 那么前缀接下来肯定也要被系统删除如果当前字符串由相同字符组成的前缀长度为1,那么就往后找是否存在连续的串,如果有的话就删除串中的一个字符,因为这样的话一个字符相同的串,可以被分为几次删除,否则当其为原创 2021-02-19 21:25:40 · 3136 阅读 · 0 评论 -
CodeForces - 1467B - Hills And Valleys (贪心)
Hills And Valleys题意修改数列中的 一个 数字 使得峰(波峰、波谷)的数量最少思路首先我们通过手写几个例子可以知道 修改一个数只能影响到左右两个数 所以能减少的峰的数量为 1、2、3 三种情况其次 若将这个数修改成 两边两个数构成的范围之外 那么不会改变峰的数量 所以第 iii 个数的改变范围为 [ai−1,ai+1][a_{i-1},a_{i+1}][ai−1,ai+1] 可以贪心地将其改成左边的数计算出能减少多少个峰 再将其变成右边的数 计算出能减少多少个峰 结果取 max原创 2021-02-14 22:14:57 · 3186 阅读 · 0 评论 -
CodeForces - 1468D - Firecrackers (贪心)
Firecrackers题意一个囚犯和一个守卫 在一维坐标上移动,每一秒按顺序发生以下三件事囚犯向左或向右移动一步 或者呆在原地, 如果囚犯呆在原地, 那么它可以在所处的位置放下一个鞭炮一些鞭炮可能会爆炸 对于第 iii 个 鞭炮 会在被放置后的 sis_isi 秒爆炸守卫会朝囚犯的方向前进一步问:在囚犯被守卫捉住前 最多能爆炸多少鞭炮思路首先要知道 一个格子可以同时存在多个鞭炮… 一开始没注意到这一点死活解不出来其次 先放鞭炮再跑 和先跑再放鞭炮,肯定是前者更优,因为原创 2021-02-13 20:02:24 · 3252 阅读 · 0 评论 -
CodeForces - 1468F - Full Turn (向量)
Full Turn题意给你 nnn 个人的位置和他们眼睛看的方向 这 nnn 个人同时开始顺时针旋转 360° 问 :在旋转过程中 有多少对人进行了眼神接触思路将 一个人的位置看成向量的起点 他看向的位置看成向量的终点 构造出一个向量 然后对这个向量进行归一化注意:不能将其标准化 即横纵坐标同时除以其长度 因为在 map 中 只要有一点误差就会被当作两个不同的数据 最终会导致我们得到的答案比正确答案少 为了避免这种情况发生 我们用 横纵坐标的 gcdgcdgcd 对其进行归一化一个人能在旋转中和原创 2021-02-13 16:32:05 · 3186 阅读 · 0 评论 -
CodeForces - 1472E- Correct Placement (排序 + 思维)
Correct Placement题意nnn 个矩形 对于每个矩形可以将它横着放或者竖着放 问能否找到另一个矩形能够放在它前面并且不将其遮挡 如果有的话输出符合条件的矩形的编号 否则输出 −1-1−1翻译成数学表达式即 :对于 ai,bi (1≤i≤n)a_i,b_i\ \ \ \ \ (1 \leq i \leq n)ai,bi (1≤i≤n) 能否找到 aj,bj &n原创 2021-02-11 00:08:18 · 3092 阅读 · 0 评论 -
CodeForces - 1469D - Ceil Divisions (思维+数学)
Ceil Divisions题意对于一个大小为 nnn 的排列 在一次操作中可以选择两个数 axa_xax 和 aya_yay (x≠y)(x≠y)(x=y) 并设置ax=⌈axay⌉a_x= \lceil \dfrac{a_x}{a_y} \rceilax=⌈ayax⌉在不超过 n+5n+5n+5 次操作后内使数组由 n−1n-1n−1 个 111 和 111 个 222 组成思路首先我们知道 ⌈i−1i⌉=1\lceil\dfrac{i-1}{i}\rceil = 1⌈ii−原创 2021-02-11 00:23:56 · 3120 阅读 · 0 评论 -
CodeForces - 1468J - Road Reform (最小生成树)
Road Reform题意给你一个 nnn 个顶点 mmm 条边的无向图 (没有重边) 要求删掉 m−(n−1)m - (n - 1)m−(n−1) 条边使得图仍联通 并且权值最大的边与 kkk 的差值最小思路先把所有小于等于 kkk 的边加入新图 然后判断是否连通如果已经联通 那么有两种选择 1.将已经加入的最大边权增大到 kkk 2.将大于 kkk 的第一条边加入 并且减少到 kkk如果没有联通 那么按照边权递增的顺序加入边 直到联通为止代码#include<bits/st原创 2021-02-13 16:17:19 · 3327 阅读 · 3 评论 -
CodeForces - 1478C - Nezzar and Symmetric Array (思维+规律)
Nezzar and Symmetric Array题意有 2n2n2n 个不同的整数 对于每个 1≤i≤2n1\leq i \leq 2n1≤i≤2n 都存在1≤j≤2n1\leq j \leq 2n1≤j≤2n 使得 ai=−aja_i = -a_jai=−ajdi=∑j=12n∣ai−aj∣d_i = \sum_{j = 1}^{2n}{|a_i - a_j|}di=∑j=12n∣ai−aj∣ 给你 ddd 问是否存在符合条件的原数组思路举个例子 −4,−3,−2,−1,1,2,原创 2021-02-09 20:43:43 · 2959 阅读 · 0 评论 -
CodeForces - 1477A - Nezzar and Board(数论)
Nezzar and Board题意对 一个大小为 nnn 的整数集合 进行操作 每次可以选取两个数 x,yx,yx,y 得到 2x−y2x-y2x−y 加入这个集合问 经过无限次这样的操作之后 能否得到 kkk思路假设一次操作后得到 2x−y2x-y2x−y 另一次操作后得到 2p−q2p-q2p−q那么这两个新得到的数再进行操作可以得到 2∗(2x−y)−(2p−q)2*(2x-y) - (2p-q)2∗(2x−y)−(2p−q) 可以得到一个规律 :每次操作得到的式子 系数都为1 那原创 2021-02-10 00:39:07 · 3161 阅读 · 0 评论 -
CodeForces - 1459D - Glass Half Spilled
Glass Half Spilled题意在编号为 111 的桌子上有 nnn 个玻璃杯,第 iii 个杯子可以容纳最多 aia_iai 单位水,当前包含 bib_ibi 单位水。选择 kkk 个玻璃杯,并尽可能多地收集水。为了达到这个效果,你可以把水从一个玻璃杯倒到另一个玻璃杯,想倒多少次就倒多少次 然而,每次你试图转移任何数量的水时,都会有一半的水洒在地板上。对于每个 k=1、2、3、…nk=1、2、3、\dots nk=1、2、3、…n,确定在零次或多次在玻璃杯之间转移水后,任意选择的k个玻璃原创 2021-01-30 16:50:08 · 3039 阅读 · 0 评论 -
Educational Codeforces Round 103 D - Journey (思维 + 前后缀)
Journey题意一条链上分布有 0~n 个点,每一个点中间有一条单向边连接,并用字母 ‘L’ 和 ‘R’表示若为 L 说明该边方向向左,若为 R 说明该边方向向右你可以在任意一点开始移动,并且每移动一步,上述边的方向改变一次要求求出每一个点能够到达的最多点数(若一个点被多次走到,那么仅算一次)思路当某一点左边或者右边出现 RLRLRL 交替时 可以一直走下去 并且可以原路返回只需要求出当前点左边和右边 RLRLRL 或者 LRLRLR 交替出现的次数即可 (顺序不重要)即if (s[i原创 2021-01-30 16:24:08 · 3088 阅读 · 1 评论 -
Educational Codeforces Round 103 C - Longest Simple Cycle (思维 + 贪心)
Longest Simple Cycle题意有 nnn 条链,第 iii 条链上有 c[i]c[i]c[i] 个点,a[i]a[i]a[i] 为第 iii 条链的顶点与第 i−1i-1i−1 条链的连接点,b[i]b[i]b[i] 为第i条链的最后一个点与第 i−1i-1i−1 条链的连接点。找这样的一个环,环上的每个点都只被访问一次,问该环的最大长度为多少。思路反向遍历 c[i]c[i]c[i]设 res1res1res1 和 res2res2res2res1res1res1 表示 每条链原创 2021-01-30 14:39:53 · 2932 阅读 · 0 评论 -
CodeForces - 1459C Row GCD (思维+数学)
Row GCD题意对于两个正整数序列 a!、a2、a3、…ana_!、a_2、a_3、 \dots a_na!、a2、a3、…an 和 b1、b2、b3…bmb_1、b_2、b_3 \dots b_mb1、b2、b3…bm 对于每个 j=1、2、…jj = 1、2、\dots jj=1、2、…j 找到 a1+bj、a2+bj+a3+bj、…an+bja_1 + b_j、a_2+b_j + a_3+b_j、\dots a_n+b_ja1+bj、a2+bj+a3+bj、…an+原创 2021-01-27 22:05:38 · 2847 阅读 · 0 评论 -
Codeforces - 1463C. Busy Robot (思维)
功能:①快速求前缀和O(logn)O(logn)O(logn)②修改某一个数O(logn)O(logn)O(logn)操作:①:建树void add(int x, int c) { //树状数组的插入操作 for (int i = x;i <= n;i += lowbit(i))tr[i] += c;}②:区间查询:1 ~ x 前缀和for(int i = x;i <= n;i += lowbit(i))res += c;③:单点修改:for(int i = x;i;原创 2020-10-23 23:27:14 · 1939 阅读 · 0 评论 -
Codeforces Round #689 Div. 2 (A-E)
A. String Generation题意构造一个只包含’a’ ‘b’ 'c’的字符串 此字符串中最大回文子串的长度不超过k思路'abcabcabc…'这样输出 可以保证最大的回文子串的长度为1代码#include<bits/stdc++.h>using namespace std;typedef long long LL;const int N = 100010;void solve() { int n, k; cin >> n >> k;原创 2021-01-15 23:31:49 · 2114 阅读 · 0 评论 -
HDU 1166-敌兵布阵
HDU 1166-敌兵布阵题意:给一个数组,有查询、增加、减少三种操作 对于每次询问 输出从i到j所有元素的和思路:树状数组裸题特别的 对于减少操作 只需向x位置更新-y即可#include<iostream>#include<cstdio>#include<queue>#include<string>#include<map>#include<vector>#include<set>#include原创 2020-07-13 23:35:57 · 1824 阅读 · 0 评论 -
POJ 1182-食物链
POJ 1182-食物链题意:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X Y",表示X和Y是同类。第二种说法是"2 X Y",表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真原创 2020-07-13 23:25:51 · 1778 阅读 · 0 评论 -
POJ 2431-Expedition
POJ 2431-Expedition题意:开车前往一个距离为l的城市,途中有n个加油站,每行驶一个单位的距离就会消耗一个单位的汽油,每到一个加油站都可以加油,问是否能到达目的地,能到达的话,最少需要加多少次油。思路:衷心提醒大家仔细看题!!!!!!输入的距离不是距起点的距离,而是距终点的距离(白WA3发血亏),而且不一定按顺序给出,需要进行排序,所以用结构体还是比较方便的。我们可以这样想,既然路过的每个加油站都可以加油,意思就是“经过一个加油站就获得了在之后任何一个时间加油的权力”。为了最小原创 2020-07-13 23:23:07 · 1732 阅读 · 0 评论 -
Codeforces Round #644(Div. 3) A-H
A - Minimal Square题意给两个完全一样的矩形(平行且不重叠) 求能覆盖两个矩形的最小正方形的面积思路只有两种摆放方式 将两个矩形上下并列或者左右并列 得到的新图形 长或者宽是之前的二倍判断一下并排之后的图形长和宽的最小值即可#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define mod 1000000007#define IOS ios::sync_with_stdio(false);cin.tie(0);cou原创 2020-07-25 00:37:50 · 1866 阅读 · 0 评论 -
Codefroces 1033C. Permutation Game
C. Permutation Game题意:一个线性的棋盘,上面有n个格子编号为1-n,当棋子所在位置满足以下情况时,可以移动1.新格子的数值必须严格大于旧格子2.移动的距离必须是旧格子中数字的整数倍谁不能采取行动,谁就输了,即当前棋子位于一个不能移动的位置求哪些出发格子可以使Alice必胜思路记录每个点下一步能到达的点,建反图然后拓扑如果一个点标记为0代表必输点,为1代表必赢点,-1表示还没判断对每一个入度为0的点,即没有可到达的下一个点的点进行判断如果点u是必输点,说明无法进行下一原创 2020-07-13 23:34:08 · 1740 阅读 · 0 评论 -
Codeforces Round #636 (Div. 3) A-D
A. Candies题意给定一个整数,判断是否存在思路先对公式进行预处理 明显是一个等比数列化简后得到因为答案一定存在 所以用快速幂从小到大枚举即可#include<iostream>#include<cstdio>#include<queue>#include<string>#include<cstring>#include<map>#include<vector>#include<se原创 2020-07-13 23:32:17 · 1774 阅读 · 0 评论 -
Codeforces Round #630(div2) A-C
这一场div2只A了两题 竟然加了70多分orz(肯定是基础分太低A.Exercising Walk##题意:向左走a步,向右走b步,向下走c步,向上走d步,问能否在执行所有操作的过程中始终处于题目给的范围内##思路:只需判断同方向移动步数的代数和是否满足条件即可,注意特判下x1 == x2 和 y1 == y2的情况这里我们用ta和tb代表一对相反方向的差对于ta 为什么用b-a而不用a-b呢可以这样思考 b-a为向右移动的步数当b-a大于0时代表最终向右移动 此时x+ta恰好比x大 也原创 2020-07-13 23:21:13 · 1852 阅读 · 0 评论