![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CF加训
文章平均质量分 55
欧阳小百合
始于足下!
展开
-
Codeforces Round #842 (Div. 2)
不想搞的很累,对自己不做要求,有兴趣就做。原创 2023-01-13 17:23:25 · 533 阅读 · 1 评论 -
Good Bye 2022: 2023 is NEAR
出到C题,D稍微有点眉目但有个细节搞不明白,晚点补。原创 2023-01-11 15:21:50 · 454 阅读 · 0 评论 -
Hello 2023
没什么压力的时候VP CF还是蛮开心的。原创 2023-01-10 12:08:41 · 451 阅读 · 0 评论 -
Codeforces Round #751 (Div. 2) 题解
Codeforces Round #751 (Div. 2)A. Two Subsequences就是找字典序最小的字母,然后输出,其他再输出。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 515;int main() { int T; cin >> T; while (T--) { string s;原创 2021-10-26 19:19:14 · 195 阅读 · 0 评论 -
Codeforces Round #750 (Div. 2)题解
Codeforces Round #750 (Div. 2)A. Luntik and Concerts太傻逼了,就是sum判断&1。比起这个,一开始ABC中出了BC卡A的我不是更傻逼…#include <bits/stdc++.h>typedef long long ll;using namespace std;int main() { int T; cin >> T; while (T--) { ll a, b,原创 2021-10-26 18:47:58 · 243 阅读 · 0 评论 -
Educational Codeforces Round 113 (Rated for Div. 2)_C. Jury Meeting
Educational Codeforces Round 113 (Rated for Div. 2)终于补完了两场。祝我们的好队友涛涛妹妹生日快乐!C. Jury Meeting题目传送门:题目传送门题目大意:一堆数字让你排序,问有几种排序方式,满足依次-1后,不会产生连续两次都是同一个元素-1的情况。思路代码:#include <bits/stdc++.h>using namespace std;const int maxn = 2e5 + 5;const in原创 2021-09-29 23:23:42 · 114 阅读 · 0 评论 -
Codeforces#744(Div3)ABCDE1E2F
Codeforces#744(Div3)今天要补2场CF的题目,算做给队友的生日礼物。比赛传送门A. Casimir’s String SolitaireSumA+SumC==SumB?“Yes”:“No”;#include <bits/stdc++.h>using namespace std;int main() { int T; cin >> T; while (T--) { string s; cin &原创 2021-09-29 20:51:16 · 178 阅读 · 0 评论 -
Codeforces Global Round 16 D2. Seating Arrangements (hard version)
D2. Seating Arrangements (hard version)题目传送门:题目传送门题面:题目大意:这题目很搞。就是给你n∗mn*mn∗m的网格,每个格子有自己的编号,编号方法见上图。再给你n∗mn*mn∗m个数字,要求数量越大的数字要在编号越大的格子里。然后定义ansansans。好难讲啊,就是每个数字要按照给定顺序到该去的地方,每途径一个非空网格就要ans++;ans++;ans++;问最终整个网格ansansans是多少。思路:哎,当时比赛时候心态不好,其实肯原创 2021-09-14 13:20:06 · 251 阅读 · 5 评论 -
Codeforces Round #738 (Div. 2)_D2. Mocha and Diana (Hard Version)_贪心并查集
D2. Mocha and Diana (Hard Version)题目传送门:题目传送门题面:题目大意:相比easy version只改变了数据范围。思路:贪心+并查集。先都看看能不能和1连,再把散点看看能不能一一配对。代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e3 + 10;struct T { vector<int> p; int find(in原创 2021-08-19 09:44:33 · 147 阅读 · 1 评论 -
Codeforces Round #738 (Div. 2)_D1. Mocha and Diana (Easy Version)
D1. Mocha and Diana (Easy Version)题目传送门:题目传送门题面:题目大意:给定nnn个点,以及m1和m2。m1,m2分别代表在图1中连了m1条边,在图二中连了m2条边(无向图)。输出最多还能在图中连多少条边,不会让图变成有环图。本次连边采取同步连法,即选定u,v,在两张图内一起连u,v。l两张图本身互不影响。本题复杂度松,可以直接并查集暴力维护。代码:#include<bits/stdc++.h>using namespace std;原创 2021-08-16 11:29:58 · 260 阅读 · 0 评论 -
Codeforces Round #738 (Div. 2)_C. Mocha and Hiking
C. Mocha and Hiking题目传送门:题目传送门题面:题目大意:给你一张有向图,共n+1n+1n+1个点,其中前nnn个点的第iii个点到第i+1i+1i+1个点都连着一条有向边。数组a表示1 n1~n1 n这nnn个村庄与第n+1n+1n+1个村庄之间路的关系。若为0,表示可以从第iii个村庄走到第n+1n + 1n+1个村庄。若为1则反过来,表示可以从第n+1n+1n+1个村庄走到第iii个村庄这些都是有向边。问你是否存在经过所有点一次且仅一次的路原创 2021-08-16 11:24:54 · 103 阅读 · 0 评论 -
Codeforces Round #738 (Div. 2)_B. Mocha and Red and Blue
B. Mocha and Red and Blue题目传送门:题目传送门题面:题目大意:意思就是给你一堆字符串包含′?′、′R′、′B′'?'、'R'、'B'′?′、′R′、′B′,其中R代表红色,B代表蓝色,?代表未涂色。然后每次相邻块一样的话就ans++,输出让ans取最小的字符串(把?都替换成R或者B)。思路:间隔着涂肯定是最优的。代码:#include<bits/stdc++.h>using namespace std;char s[200];char a[2原创 2021-08-16 11:06:54 · 117 阅读 · 0 评论 -
Codeforces Round #738 (Div. 2)_A. Mocha and Math
A. Mocha and Math题目传送门:题目传送门题面:题目大意:给你一堆数字,你可以选择一个区间[l,r][l,r][l,r],把区间内al+ia_l+ial+i用al+i&ar−ia_l+_i\&a_r-_ial+i&ar−i替换。问你最后序列内最大值的最小值是多少。思路:A&B≤AA&B≤B所以最佳策略就是把整个序列全部&完,那肯定剩下那个最小。AB题别想太多。代码:#include <bits/stdc原创 2021-08-16 10:59:26 · 101 阅读 · 0 评论 -
Codeforces Round #726 (Div. 2)_E1&E2
E. Erase and Extend题目传送门:题目传送门题面截图:题目大意:给你字符串,可以进行两种操作:要么删除最后一个要么把字符串重复一遍最终要你通过上述操作弄出一个特定长度字符串,要求字符串字典序最小。思路:首先可以得到,最优字符串一定是先进行第一步操作若干次,再进行后一步操作若干次,混用是没有意义的。就是如果以单个为例:ababaaaaa…比aaaaaaaaa更优,那么说明b就是比a强,那么直接bbbbb…肯定更好。然后就可以开始写代码啦!判断重复的模式串里要不原创 2021-08-13 16:52:44 · 60 阅读 · 0 评论 -
Codeforces Round #726 (Div. 2)_D. Deleting Divisors_博弈!
D. Deleting Divisors题目传送门:题目传送门题面截图:题目大意:Alice和Bob博弈,给你一个数字nnn,每个人的操作就是给nnn减掉一个它的因子。谁最先没得操作就输了。思路:代码:# include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 2e5 + 10;int main() { int t; cin >> t原创 2021-08-13 16:38:00 · 90 阅读 · 0 评论 -
Codeforces Round #726 (Div. 2)_C. Challenging Cliffs
C. Challenging Cliffs题目传送门:题目传送门题面:题目大意:这个题卡了我好久,哎。最后发现题意读错了。给你一堆山,再给你他们的高度hih_ihi,在情况满足∣h1−hn∣min|h_1-h_n|min∣h1−hn∣min,需要最多的hi≤hi+1h_i≤h_i+_1hi≤hi+1,输出满足的排列方式。思路:递增排列最优秀,那就先找到∣h1−hn∣min|h_1-h_n|min∣h1−hn∣min,中间进行一个递增的插。hp+1——hn,h1——hph原创 2021-08-13 16:18:43 · 112 阅读 · 0 评论 -
Codeforces Round #726 (Div. 2)_B. Bad Boy
B. Bad Boy像A题的B题。题目传送门:题目传送门题面:题目大意:意思就是一个n*m的网格,人在(i,j)上,问你选两点使得人走到目标点并且最终回到原位距离最大。输出坐标。思路:毛估估是对角线两个格子。算了下两组对角线答案相等的,那就输出好了。代码:# include<bits/stdc++.h>using namespace std;typedef long long ll;int main() { int t; cin >>原创 2021-08-13 15:50:57 · 56 阅读 · 0 评论 -
Codeforces Round #726 (Div. 2)_A. Arithmetic Array
A. Arithmetic Array题目传送门:题目传送门题面:题目大意:意思就是给你一堆数字,问你最少加几个0~INF的整数可以让这堆数平均数为1。代码:不多说,有手手就行。# include<bits/stdc++.h>using namespace std;typedef long long ll;int main() { int t; cin >> t; while (t--) { int n;原创 2021-08-13 15:47:30 · 80 阅读 · 0 评论 -
Codeforces Round #727 (Div. 2)_D. PriceFixed
D. PriceFixed题目传送门:题目传送门题面截图:题目大意:有 nnn 种商品要买,每种商品初始价格 222 元,第 iii 种商品至少要买aia_iai个。如果之前已经买了 bib_ibi件商品,那么之后买第iii件商品只要1元。可以任意调整购买顺序,求最小花费。思路:贪心按照bibibi对商品排序,最小的bibibi商品最容易得到打折的机会,最大的bibibi商品最不容易得到打折的机会,购买时遵循以下原则:有打折商品能买就买;无打折商品就买当前最大的bibibi商品原创 2021-08-13 14:03:51 · 95 阅读 · 0 评论 -
Codeforces Round #727 (Div. 2)_C. Stable Groups
C. Stable Groups题目传送门:题目传送门题面截图:题目大意:有nnn名学生,每名学生有水平 aia_iai ,将其分为几个稳定组。稳定组定义:将组内学生排序后,两两间水平差不超过 x 。允许增加任意水平的 k 名学生。求让组数最少能是多少。思路:先排序看看现在能分成几个组,然后组间从小往大用那k个人让两组合并,直到任意水平的人数少到无法让两组合并为止。贪心。代码:#include <bits/stdc++.h>using namespace std原创 2021-08-13 10:39:04 · 78 阅读 · 0 评论 -
Codeforces Round #727 (Div. 2)_B. Love Song(前缀和)
B. Love Song不要隔天写题解,会变得不幸。题目传送门:题目传送门题面截图:题目大意:给定长度为 n 的字符串,有 q 次询问,每次询问指定其中的一个连续子串 [ l , r ] 求将其中的字母‘a’ 重复1次, ‘b’ 重复2次这样处理后的长度。思路:打表后处理,不然肯定超时。简单还是很简单的。B题一般暴力+前缀和这类基础一定能做了。希望自己记住,不要总是乱想。代码:#include <bits/stdc++.h>using namespace std;原创 2021-08-13 10:28:22 · 152 阅读 · 0 评论 -
Codeforces Round #727 (Div. 2)_A. Contest Start
A. Contest Start今天的Codeforces卡成马了。虽然AB一般都很简单,但是个人觉得拿出来理一下思路还是很有必要的,毕竟CF前两题卡了心态会变差,切得顺利对后面帮助也很大。题目传送门:题目传送门题面:题目大意:有nnn个人参加活动,第一个人从开始(认为是0时刻加入),后面人员加入时间依次递增xxx,每个人活动时间均为ttt,定义一个人的不满意度为他结束时候活动当前参与人数(这一时刻刚加入也算)。求所有人不满意度总和。思路:两种情况:第一人结束时还有人未加入活动;原创 2021-08-12 11:03:12 · 90 阅读 · 0 评论 -
Codeforces Round #729 (Div. 2)_D. Priority Queue
D. Priority Queue哈哈8.11吃啥补啥初阶计划(3/3)完成!!题面传送门:题面传送门题面:题目大意:意思是给你n行东西,要么是“+ x"这种(x为一个数字),要么是一个减法。减法是从已选序列中删除最小的一个元素,空的不变。问你给定序列的所有子序列总和为多少。思路:是一道DP题目。首先n的范围不大,实际上算得是每个+对最终总和的贡献(也就是算了几次),状态之间有递推关系,所以考虑DP。推荐欣君的讲解视频,能把白痴(我)讲懂代码:#include <bi原创 2021-08-11 23:34:10 · 116 阅读 · 0 评论 -
Codeforces Round #729 (Div. 2)_C. Strange Function(容斥定理)
C. Strange Function题目传送门:题目传送门题目大意:定义函数f(x)f(x)f(x)是x非因子数字中最小的那个。给你一个1e16范围数字n,要求返回f(1)+f(2)+...f(n)f(1)+f(2)+...f(n)f(1)+f(2)+...f(n)。要求结果取模。思路:打了个毫无意义的表,但实际上可以更简单点。代码:更简单的#include <bits/stdc++.h>using namespace std;typedef long long原创 2021-08-11 23:06:43 · 115 阅读 · 0 评论 -
Codeforces Round #729 (Div. 2)_B. Plus and Multiply
B. Plus and Multiply题目传送门:题目传送门题面:题目大意:就是一个无限序列,初始元素是1,操作是不断地把当前结果*a或者+b,给你一个数字n,问可不可以由当前序列属性得到。思路:关键代码:ll sum = 1;while (sum <= n) {if ((n - sum) % b == 0) {cout << “Yes” << endl;f = 1;break;}sum *= a;}代码:#include <原创 2021-08-11 22:51:19 · 119 阅读 · 0 评论 -
Codeforces Round #729 (Div. 2)_A. Odd Set
A. Odd Set虽然是补CD计划,但是既然要打不如VP,VP了干脆前面也带过一下。题目传送门:题目传送门题面:题目大意:给你数字nnn,再给你2∗n2*n2∗n个元素,问你可不可以两两配对使每对的和加起来是一个奇数。思路:奇数+奇数=偶数偶数+奇数=奇数偶数+偶数=偶数就是问你能不能实现奇偶一一搭配。笑死了,就这我还WA了一发,以为输入了n个元素,样例都不测就交,不愧是我。代码:#include <bits/stdc++.h>using namespace原创 2021-08-11 22:42:43 · 81 阅读 · 0 评论 -
#Codeforces Round #737 (Div. 2)_C. Moamen and XOR(组合数学)
C. Moamen and XOR本周有个新企划吃啥补啥做CD计划,打算一天保证吃透3~5道Codeforces的C、D题。毕竟年度愿望就算不能实现也要实实在在地付出努力。题目传送门题目传送门题目大意:题目大意:问你能构造出多少种序列a满足:思路:奇数个1异或是1,偶数个1异或是0。对序列中的每一个排列组合。因为满足的情况主要分为以下两种:该位得出结果相等的情况)^ 位数从高位往低位处理,每一位处理结果都必须满足≥,但一旦有一位>,那么后面位数可以直接不用考虑,所有情况原创 2021-08-11 10:35:45 · 114 阅读 · 0 评论 -
Codeforces Round #732 (Div. 2)_D. AquaMoon and Chess
D. AquaMoon and Chess题目传送门:题目传送门题面:图截的是Div1的,所以是B。题目大意:给你一堆01串,移动方法是“011”可以变成“110”;“110”可以变成“011”,就是对应1可以跨越相邻的1到隔这个1位置的0处。问你给定01串可以衍生出几种不同排列方法。思路:欣君的视频讲解非常清晰,珠玉在前我就直接偷懒不写思路。简单说记录11和0的数量。思路如何转换非常重要,我觉得还是挺难做的,希望自己能在这方面有所涉猎,下次能看出来。#include <b原创 2021-08-09 10:37:01 · 90 阅读 · 0 评论 -
Codeforces Round #732 (Div. 2)_C. AquaMoon and Strange Sort
C. AquaMoon and Strange Sort题目传送门:题目传送门题面:题目大意:需要将给定数组按递增排序且每个数字调换都必须是偶数次,只能交换相邻的两个人,问能否成功实现。思路:其实就是奇数位的数字最终也还是要在奇数位。对照下满足不了就弹出NO。如何把题意转化为奇数位的数字最终也还是要在奇数位,偶数位的数字最终也还是要在偶数位是本题思维关键!!!!代码:#include<bits/stdc++.h>typedef long long ll;using n原创 2021-08-08 17:15:17 · 87 阅读 · 0 评论 -
Codeforces Round #736 (Div. 2)_B. AquaMoon and Stolen String
B. AquaMoon and Stolen String题目传送门:题目传送门题面:题目大意:给你nnn个长度为mmm的字符串,再给你n−1n-1n−1个长度为mmm的字符串。后者那组由前者取n−1n-1n−1个然后重组产生,问前者组中未参与重组的字符串是哪个。重组方法:对应位置互换。思路:发现行虽然一直在变,特定字符数量不停在变,但其实重组的那组字符串,从列来看保持恒定,不会多不会少。直接已列为单位,前者一列长度为nnn,后者一列长度(n−1)(n-1)(n−1),少的那个直接输原创 2021-08-08 17:01:47 · 83 阅读 · 0 评论 -
Codeforces Round #736 (Div. 2)_A. AquaMoon and Two Arrays
A. AquaMoon and Two Arrays题目传送门:题目传送门!题面截图:题目大意:不要隔天写题解,会变得不幸。给你数组a,和数组b。可以选择i,j{i,j}i,j,对数组a进行a[i]+1,a[j]−1a[i] + 1,a[j] -1a[i]+1,a[j]−1使得数组a和数组b相等。问几次操作选择后,两数组变得一样。思路:发现几点:数组总和是不变的,如果两个数组和不一样一定无法转换。相同位置的目的大小已知。先看总和一不一样,不一样直接跳出。遍历找对应位置不同的a原创 2021-08-08 16:54:18 · 100 阅读 · 0 评论 -
Codeforces Round #736 (Div. 2)_C. Web of Lies
C. Web of Lies题目传送门:题目传送门题目截图:题目大意:给你一张图,连边代表两个点是朋友。一个点如果它所有的朋友都比它大,那他就出局了。接下来做q个操作:1 u v代表uv之间连边;2 u v代表uv之间删边;3表示输出此时尚未出局的点数。思路:面向样例编程。得到两个关键信息:出局的点也可以继续连边边;哈哈题目有给提示!意思就是只要有连边就会有人出局,只要不是孤立点就会有机会被淘汰,除非是最强者,否则都会逐个淘汰。代码:#include <bit原创 2021-08-04 17:18:57 · 104 阅读 · 0 评论 -
Codeforces Round #736 (Div. 2)_B. Gregor and the Pawn Game
B. Gregor and the Pawn Game题目传送门:题目传送门!题面:题目大意:你的棋子在最后一排,对方的棋子在第一排。给你两个字符串用01表示有无棋子在上面。走法:往上走,要求是上方无棋子阻挡;斜对角走一格,要求是目的格子上只有一个敌方棋子。问你有几个棋子能走到第一排。只有你的棋子可以动。思路:直接暴力模拟。对你的棋子是0的部分开始,如果对着的部分是1:那么找斜角线有无1;如果对着的部分是0,那么直接走进去就完事了。用过的格子不能重复使用,记得处理一下。原创 2021-08-04 17:03:34 · 214 阅读 · 0 评论 -
Codeforces Round #736 (Div. 2)_A. Gregor and Cryptography
A. Gregor and Cryptography题目传送门:题目传送门题面截图:题目大意:给你个质数P,输出a、ba、ba、b满足:2≤a<b≤P2≤a<b≤P2≤a<b≤P;Pmoda==PmodbP mod a == P mod bPmoda==Pmodb;思路:已知P比5大,那么质数P一定是奇数,输出(n-1)/2即可。代码:#include <bits/stdc++.h>using namespace std;typedef long原创 2021-08-04 16:55:07 · 106 阅读 · 0 评论 -
Educational Codeforces Round 111 (Rated for Div. 2)_C. Manhattan Subarrays
C. Manhattan Subarrays题目传送门:题目传送门题面:题目大意:定义了一个关系叫坏东西:三点间曼哈顿距离存在这种关系。然后给你一排数字,代表的是(ai,i)(a_i,i)(ai,i)的点。问你这堆点里能找出几个不同连续子序列使得里面随意选三个点都不会是坏东西关系。如果选的数字量≤2,认为是符合条件的选择。思路:选择子序列长度为lll:l==1l==1l==1,按照题意,所有情况都符合。l==2l==2l==2,按照题意,所有情况都符合。l==3l==3l原创 2021-07-30 14:38:12 · 119 阅读 · 0 评论 -
Educational Codeforces Round 111 (Rated for Div. 2)_B. Maximum Cost Deletion
B. Maximum Cost Deletion题目传送门:题目传送门题面:题目大意:给你a,b,na,b,na,b,n,然后给你一个长度为nnn的01串。你只能选择连续的lll个相同数字一起删除,删除时候获得点数a∗l+ba*l+ba∗l+b,求全部删除获得最多点数为多少。思路:以后还是要想清楚再下手打。一急躁就出问题。首先好理解:sum=a∗(l1+l2+..lx)+b∗xsum=a*(l_1+l_2+..l_x)+b*xsum=a∗(l1+l2+..lx)+b∗x因为要原创 2021-07-30 14:13:04 · 78 阅读 · 0 评论 -
Educational Codeforces Round 111 (Rated for Div. 2)_A. Find The Array
A. Find The Array题目传送门:题目传送门题面:题目大意:其实没完全看懂,应该意思就是给你nnn,让你构造一个和为n的数组。要求满足若ai存在,则ai−1或者ai−2存在a_i存在,则a_i-_1或者a_i-_2存在ai存在,则ai−1或者ai−2存在。在此性质下尽量构造长度最短的数组并且输出。没完全看懂,反之1不受要求约束。我直接进行一个1,3,5,7…放进去,直到不够放,剩余的再放进去。如果放进去的是奇数,一定已存在-2的数字;如果放进去的是偶数,一定存在-1的数原创 2021-07-30 13:59:22 · 79 阅读 · 0 评论 -
# Codeforces Round #735 (Div. 2)_D. Diane_我很喜欢的构造题
D. Diane题目传送门:题目传送门题面:题目大意:给你长度,让你构造一个字符串,其上面所有非空子串出现次数都是奇数。思路:奇偶构造题首先先整一堆a。想办法把字符串变成左边有偶数个a ,右边奇数个a ,总个数还是奇数,而且“aa"、“aaa"什么的出现也是奇数,因为两边个数总是一奇一偶,加起来就是奇数。然后中间剩下的随便咋构造,也就一两个了,别重复就肯定没问题。重要的是构造出两边的奇偶不同情况。我直接进行一个nt构造。代码:#include <bits/stdc++.h原创 2021-07-30 11:03:34 · 96 阅读 · 0 评论 -
Codeforces Round #735 (Div. 2)_C. Mikasa
C. Mikasa题目传送门:题目传送门题面:题目大意:这什么位运算场。给你n,mn,mn,m,让你求n⊕0,n⊕1...n⊕m{n⊕0,n⊕1...n⊕m}n⊕0,n⊕1...n⊕m中最小未出现的非负数。运算法则:a ⊕ a = 0a ⊕ b = b ⊕ a(交换律)a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c; (结合律)d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c.a ⊕ b ⊕ a = b.A ⊕ 0 = A ;1异或任何原创 2021-07-30 10:43:10 · 225 阅读 · 2 评论 -
Codeforces Round #735 (Div. 2)_B. Cobb_理性的乱搞题
B. Cobb题目传送门:题目传送门题面:题目大意:意思就是说找出一个值在数组中的最大情况,对于这个值的定义求法用到的是数对i,j{i,j}i,j:i∗j−k∗(ai∣aj)i*j-k*(a_i|a_j)i∗j−k∗(ai∣aj);1≤i,j≤n1≤i,j≤n1≤i,j≤n;思路:观察i∗j−k∗(ai∣aj)i*j-k*(a_i|a_j)i∗j−k∗(ai∣aj),要让它取最大值,i∗ji*ji∗j需要尽可能大。所以思路是从大往小遍历。条件break;if (ans原创 2021-07-30 09:37:19 · 261 阅读 · 0 评论