codeforces
codeforces
Fiveneves
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 97 (Rated for Div. 2) D. Minimal Height Tree
D. Minimal Height Tree题目链接-D. Minimal Height Tree题目大意有一棵树,其子节点都是按照升序摆列,现在给出广度优先搜索的访问次序,请你求出该树的最小深度解题思路bfs思想+贪心bfs思想+贪心bfs思想+贪心刚开始开始我们易得mp[0]=1,每次用mp[ans]++记录每一深度的可用的节点数目,对于一段严格单增的区间,必然是放在同一个父节点下面最好从第二个节点开始遍历,当a[i]<a[i-1]时,说明a[i]和a[i-1]不能连在同一原创 2020-10-29 01:03:40 · 253 阅读 · 0 评论 -
Codeforces Round #658 (Div. 2) D. Unmerge
D. Unmerge题目链接-D. Unmerge题目大意定义两个数组的合并merge(a,b)merge(a,b)merge(a,b),每次将数组aaa第一个元素和数组bbb第一个元素中最小的那个放到序列sss中,同时删除那个最小的元素,现在给你一个长度为2n2n2n的序列,问该序列是否能由两个长度为nnn的数组合并而成解题思路分段+01背包分段+01背包分段+01背包因为每次都是选a,ba,ba,b中较小的那个放到数组sss中,所以我们可以得出如果b[i]>max(a[l…r])原创 2020-07-23 14:35:51 · 151 阅读 · 0 评论 -
Codeforces Round #658 (Div. 2) C1+C2. Prefix Flip
C1+C2. Prefix Flip题目链接-C1. Prefix Flip (Easy Version)字符串长度n<=1000n<=1000n<=1000,可操作次数k<=3nk<=3nk<=3n题目链接-C2. Prefix Flip (Hard Version)字符串长度n<=100000n<=100000n<=100000,可操作次数k<=2nk<=2nk<=2n题目大意给你两个二进制字符串a,ba,ba,b,每次原创 2020-07-23 02:28:09 · 128 阅读 · 0 评论 -
Codeforces Round #658 (Div. 2) B. Sequential Nim
B. Sequential Nim题目链接-B. Sequential Nim题目大意给 nnn 堆石子的数量,两人轮流从最左端的非空堆中取任意数量(>0)(>0)(>0)的石子,无法再取者输,假设两人都会采取最佳策略,判断谁会赢解题思路因为每堆石子只有ai=1a_i=1ai=1和ai>1a_i>1ai>1这两种情况,当ai=1a_i=1ai=1时是没有决策权的,该该堆只能一次取完,而当ai>1a_i>1ai>1时,可以选择一次原创 2020-07-22 21:38:09 · 164 阅读 · 0 评论 -
Codeforces Round #658 (Div. 2) A. Common Subsequence
A. Common Subsequence题目链接-A. Common Subsequence题目大意给出两个数组,请你找出二者最短的公共子序列解题思路如果两个数组中没有一样的数字,那说明没有公共子序列,直接输出NO即可如果有相同的数字,最短公共子序列肯定为111,任意输出一个相同的数字即可具体操作见代码附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#def原创 2020-07-22 20:56:11 · 133 阅读 · 0 评论 -
Codeforces Round #656 (Div. 3) B. Restore the Permutation by Merger
B. Restore the Permutation by Merger题目链接-B. Restore the Permutation by Merger题目大意有一种排列ppp,将第二个p的元素插入到第一个保持相对顺序的元素中,结果是长度为2n的序列aaa,现给你插入后的序列aaa,请你求出原序列ppp解题思路因为是保持相对顺序插入的,所以我们直接遍历序列aaa找排列即可因为排列中不能有重复的元素,为了方便我们可以将已经输出的元素存入set,用s.count(a[i])判断已经确定的pp原创 2020-07-18 03:13:01 · 252 阅读 · 0 评论 -
Codeforces Round #656 (Div. 3) A. Three Pairwise Maximums
A. Three Pairwise Maximums题目链接-A. Three Pairwise Maximums题目大意给你三个正整数x、y和z,请你找到正整数a,b和c,使得x=max(a,b),y=max(a,c)x=max(a,b),y=max(a,c)x=max(a,b),y=max(a,c)且z=max(b,c)z=max(b,c)z=max(b,c),或者确定不可能找到这样的a,ba,ba,b和ccc(你可以以任意顺序输出a,b,ca,b,ca,b,c)解题思路因为x=max(原创 2020-07-18 02:52:43 · 1418 阅读 · 0 评论 -
Educational Codeforces Round 91 (Rated for Div. 2) A. Three Indices
A. Three Indices题目链接-A. Three Indices题目大意给你一个1−n1-n1−n的排列,请你找出三个下标i、ji、ji、j和kkk,使得:1≤i<j<k≤n1≤i<j<k≤n1≤i<j<k≤npi<pj且pj>pkp_i<p_j且p_j>p_kpi<pj且pj>pk如果没有满足条件的下标就输出NO解题思路如果该序列是按照顺序排列,即递增或递减的,显然没有答案否则必定满原创 2020-07-17 03:04:20 · 305 阅读 · 0 评论 -
Codeforces Round #655 (Div. 2) C. Omkar and Baseball
C. Omkar and Baseball题目链接-C. Omkar and Baseball题目大意给定一种操作可以使得某区间内所有数字任意排列,但是要满足排列后该区间所有数字都不能在自己原来的位置上,问最少需要多少次操作可以将原本的序列变为递增排列解题思路我们可以找位置不对的区间有多少个:如果有000个,显然该序列本身就是升序的,不需要操作如果只有111个,那么直接一次操作就行如果位置不对的区间大于111个,我们可以通过一次操作先把中间正确位置的元素换换位置,这样就把序列转化为原创 2020-07-13 02:05:56 · 233 阅读 · 0 评论 -
Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math
B. Omkar and Last Class of Math题目链接-B. Omkar and Last Class of Math题目大意解题思路附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &(-x))#define endl '\n'using namespace原创 2020-07-13 01:06:59 · 317 阅读 · 1 评论 -
Codeforces Round #652 (Div. 2) C. RationalLee
C. RationalLee题目链接-C. RationalLee题目大意给你nnn个数,有kkk个朋友,每个朋友要拿其中wiw_iwi个数,每个人获得的贡献是他拿的数的最大值+最小值,请求出所有人能获得的最大贡献解题思路双指针+贪心双指针+贪心双指针+贪心我们先对数组a[],b[]a[],b[]a[],b[]排序,当wi=1w_i=1wi=1时,最大值等于最小值,所以我们要保证wi=1w_i=1wi=1时,拿剩下数中最大的因为每个人获得的贡献是他拿的数的最大值+最小值,所以最大值原创 2020-07-12 02:13:20 · 215 阅读 · 0 评论 -
Codeforces Round #655 (Div. 2) A. Omkar and Completion
A. Omkar and Completion题目链接-A. Omkar and Completion题目大意所有元素都是正的并且不超过1000,并且对于所有索引x,y,z(1≤x,y,z≤n),ax+ay≠azx,y,z(1≤x,y,z≤n),ax+ay≠azx,y,z(1≤x,y,z≤n),ax+ay=az(不一定是不同的),则长度为n的数组a称为完全数组,请你构造一个长度为nnn的完全数组解题思路首先如果数组中的元素全是奇数,奇数+奇数=偶数,那么必定满足ax+ay≠azax+ay原创 2020-07-12 01:00:33 · 1530 阅读 · 0 评论 -
Codeforces Round #652 (Div. 2) B. AccurateLee
B. AccurateLee题目链接-B. AccurateLee题目大意给出一个000和111组成的字符串,如果字符串中有101010结构,那么就可以删除这个111和000中的一个数,求该字符串删除后最短且字典序最小的字符串解题思路先求出最右边000的位置xxx和最左边111的位置yyy,如果y>xy>xy>x则说明原串是0…10…10…1格式的,此时的字典序最小,所以无需删除字符如果y<=xy<=xy<=x,为了让得到的答案最小,101010要删掉1原创 2020-07-11 22:51:37 · 192 阅读 · 0 评论 -
Codeforces Round #652 (Div. 2) A. FashionabLee
A. FashionabLee题目链接-A. FashionabLee题目大意给你一个正nnn边(凸)多边形,当且仅当能旋转它,判断是否能使它至少有一条边平行于OXOXOX轴,并且至少有一条边同时平行于OYOYOY轴解题思路根据正方形(正四边形)可以推出,一个正多边形如果可以被相互垂直的两条对称轴分成相等的四份时,即可满足条件所以只要该多边形边数是444的倍数,即nnn%4==04==04==0,输出YESYESYES具体操作见代码附上代码#pragma GCC optimize(原创 2020-07-11 21:43:29 · 233 阅读 · 0 评论 -
Codeforces Round #653 (Div. 3) D. Zero Remainder Array
D. Zero Remainder Array题目链接-D. Zero Remainder Array题目大意初始时有一个数组aaa,x=0x=0x=0,每次执行以下两种操作之一:从111到nnn恰好选择一个iii,并将aia_iai增加x(ai=ai+x)x(a_i=a_i+x)x(ai=ai+x),然后将xxx增加1(x=x+1)1(x=x+1)1(x=x+1)只需将xxx加1(x=x+1)1(x=x+1)1(x=x+1)问最少操作多少次使得所有元素能被kkk整除解题思路原创 2020-07-10 00:05:04 · 155 阅读 · 0 评论 -
Codeforces Round #653 (Div. 3) C. Move Brackets
C. Move Brackets题目链接-C. Move Brackets题目大意给你一个长度为n的括号序列sss,其中nnn是偶数。字符串s由nnn个左方括号组成,现在每一次,你能把一个括号移到字符串最前面或者最后面,问最少移动几次,使得括号序列合法解题思路跟括号匹配 传送门——括号序列 这种题差不多因为题目说解总是存在的,所以要想知道需移动多少次,只需计算有多少对不能配对的括号就行具体操作见代码附上代码#pragma GCC optimize("-Ofast","-funrol原创 2020-07-09 01:54:32 · 159 阅读 · 0 评论 -
Codeforces Round #653 (Div. 3) B. Multiply by 2, divide by 6
B. Multiply by 2, divide by 6题目链接-B. Multiply by 2, divide by 6题目大意给你一个整数nnn,你可以对nnn进行乘222操作,也可以对nnn进行除以666操作(前提是nnn可以被666整除)。请你确定是否可以从nnn获得111,如果可以,请找出从nnn获得111所需的最少操作次数解题思路我们很容易得出6=2∗36=2*36=2∗3,而我们又可以进行n∗2n*2n∗2和n/6n/6n/6操作,不难判断如果可以从nnn获得111,那么原创 2020-07-09 01:36:35 · 131 阅读 · 0 评论 -
Codeforces Round #653 (Div. 3) A. Required Remainder
A. Required Remainder题目链接-A. Required Remainder题目大意给定x,yx,yx,y和nnn,你需要找到从000到nnn的最大可能整数kkk,使得kkk modmodmod xxx的值为yyy,即k/xk/xk/x的余数为yyy解题思路因为要找满足条件的最大整数,所以我们可以先找满足aaa modmodmod x=0x=0x=0的最大整数aaa,记a=n/x,b=na=n/x,b=na=n/x,b=n % xxx然后我们可以判断余数bbb是否大于等于原创 2020-07-09 00:26:29 · 126 阅读 · 0 评论 -
Codeforces Round #651 (Div. 2) C. Number Game
题目大意解题思路附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &(-x))#define endl '\n'using namespace std;const int INF=0x3f3f3f3f;const int dir[4][2]={-1,0,1,0,0,-1,0,1..原创 2020-06-24 16:02:34 · 170 阅读 · 0 评论 -
Codeforces Round #651 (Div. 2) B. GCD Compression
B. GCD Compression题目链接-B. GCD Compression题目大意有一个由2n2n2n个正整数组成的数组aaa,需要将数组aaa压缩成大小为n−1n−1n−1的数组bbb。首先从aaa中恰好丢弃2个(任意两个)元素,然后从a中删除任意两个元素,并将它们的和附加到b直到a中没有元素,数组bbb中所有元素的最大公约数gcdgcdgcd应大于1解题思路我们可以构造gcd=2gcd=2gcd=2的情况,因为一共有2n2n2n个正整数,所以有下面两种情况: &nbs原创 2020-06-23 02:07:32 · 189 阅读 · 0 评论 -
Codeforces Round #651 (Div. 2) A. Maximum GCD
A. Maximum GCD题目链接-A. Maximum GCD题目大意给你一个数nnn,在1—n1—n1—n的所有不同整数对中,找出成对整数的最大公约数的最大值,即求gcd(a,b)gcd(a,b)gcd(a,b)的最大值(1≤a<b≤n)(1≤a<b≤n)(1≤a<b≤n)解题思路如果nnn为偶数,那么gcd(a,b)gcd(a,b)gcd(a,b)的最大值必然是gcd(n/2,n)gcd(n/2,n)gcd(n/2,n),即最大值为n/2n/2n/2如果nnn为奇数原创 2020-06-23 01:08:04 · 222 阅读 · 0 评论 -
Codeforces Round #644 (Div. 3) F. Spy-string
F. Spy-string题目链接-F. Spy-string题目大意给定nnn个长度相同的字符串,如果能构造出一个字符串,使得其于每个字符串不同的字母个数不大于111,则输出这个字符串,否则输出−1-1−1解题思路暴力暴力暴力枚举每个字符串mmm个位置的字母,每个位置都枚举一下262626个字母,用map记录原字符串和改变一个字母后的所有字符串出现的次数最后遍历map容器,判断是否有一个字符串的出现次数大于等于nnn,若有则输出这个字符串,若没有则输出-1具体操作见代码附上代码原创 2020-06-02 05:31:53 · 241 阅读 · 0 评论 -
Codeforces Round #639 (Div. 2) C. Hilbert`s Hotel
C. Hilbert’s Hotel题目链接-C. Hilbert’s Hotel题目大意有一个大小为nnn的数组a[],对于每个整数kkk,将kkk变化为k+a[kk+a[kk+a[k%n]n]n],问变化后有没有重复的数字解题思路可以使用set的自动去重功能,最后判断set的大小是否为nnn即可每一个正数x=(i+ai)x=(i+a_i)x=(i+ai)%nnn就是新的房间的号码了,但是可能出现负数的情况,所以x=(x+n)x=(x+n)x=(x+n)%nnn,即最后的房间号码x=原创 2020-05-24 05:56:08 · 207 阅读 · 1 评论 -
Codeforces Round #643 (Div. 2) D. Game With Array
D. Game With Array题目链接-D. Game With Array题目大意构造一个长度为nnn的序列,并且nnn个数的和为SSS,问能不能找到一个数k∈[1,S]k∈[1,S]k∈[1,S],使得数组里找不出一个子序列的和为kkk或者n−kn-kn−k解题思路贪心贪心贪心取k=1k=1k=1,数组中的前n−1n-1n−1个元素都设为222,第nnn个元素为S−(n−1)×2S-(n-1)×2S−(n−1)×2 ,只要第nnn个元素不等于111 即可,前提是否则就输出-1具原创 2020-05-23 02:50:08 · 167 阅读 · 0 评论 -
Codeforces Round #643 (Div. 2) C. Count Triangles
C. Count Triangles题目链接-C. Count Triangles题目大意给你四个数A,B,C,DA,B,C,DA,B,C,D,求有多少个三边为x,y,z(A≤x≤B≤y≤C≤z≤D)x,y,z (A ≤ x ≤ B ≤ y ≤ C ≤ z ≤ D)x,y,z(A≤x≤B≤y≤C≤z≤D)的三角形解题思路组合数学组合数学组合数学若枚举x,y,zx,y,zx,y,z的值肯定是会超时的,所以我们可以枚举满足条件的x+yx+yx+y的值若想能x,y,zx,y,zx,y,z组成三原创 2020-05-23 02:09:06 · 223 阅读 · 0 评论 -
Codeforces Round #643 (Div. 2) B. Young Explorers
B. Young Explorers题目链接-B. Young Explorers题目大意每人都有一个组队人数,值为aia_iai的人只能加入人数大于等于aia_iai个人的团,求最多能组成多少个团.解题思路贪心贪心贪心先将数列从小到大排序,然后for循环遍历用cnt计数,所此时cnt==a[i]说明能凑成一队了,直接ans++,并将cnt清零一边重新计数具体操作见代码附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops"原创 2020-05-23 01:20:10 · 220 阅读 · 0 评论 -
Codeforces Round #643 (Div. 2) A. Sequence with Digits
A. Sequence with Digits题目链接-A. Sequence with Digits题目大意给你a1a_1a1和k,其中an+1=an+minDigit(an)×maxDigit(an)a_{n+1}=a_n+minDigit(a_n)×maxDigit(a_n)an+1=an+minDigit(an)×maxDigit(an),求aka_kak的大小解题思路暴力+剪枝暴力+剪枝暴力+剪枝while循环枚举每一位数字,取最大值与最小值相乘,再与aaa相加,重复原创 2020-05-22 19:48:48 · 211 阅读 · 0 评论 -
Codeforces Round #641 (Div. 2) A. Orac and Factors
A. Orac and Factors题目链接-A. Orac and Factors题目大意解题思路附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &(-x))#define endl '\n'using namespace std;const int INF=0x3f3原创 2020-05-16 16:44:35 · 183 阅读 · 0 评论 -
Codeforces Round #641 (Div. 2) B. Orac and Models
B. Orac and Models题目链接-B. Orac and Models题目大意解题思路附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &(-x))#define endl '\n'using namespace std;const int INF=0x3f3f3原创 2020-05-16 16:26:17 · 131 阅读 · 0 评论 -
Codeforces Round #641 (Div. 2) C. Orac and LCM
C. Orac and LCM题目链接-C. Orac and LCM题目大意解题思路附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &(-x))#define endl '\n'using namespace std;const int INF=0x3f3f3f3f;c原创 2020-05-16 15:46:12 · 176 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) F. Binary String Reconstruction
F. Binary String Reconstruction题目链接-F. Binary String Reconstruction题目大意构造一个二进制序列,满足有aaa对相邻的数和为000,bbb对相邻的数和为111,ccc对相邻的数和为222解题思路当bbb为000时,所有该二进制序列中只有附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define i原创 2020-05-13 22:11:57 · 148 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) G. Special Permutation
G. Special Permutation题目链接-G. Special Permutation题目大意请你构造一个1−n1-n1−n的全排列序列p,满足2≤∣pi−pi+1∣≤42≤|p_i−p_{i+1}|≤42≤∣pi−pi+1∣≤4解题思路首先当n<4n<4n<4时,无论如何都不能构造出满足条件的序列,所以直接输出-1n>4n>4n>4时,因为每两个奇数之间相差222,每两个偶数之间也相差222,我们可以用这个这个性质来构造序列不管奇数偶原创 2020-05-13 09:38:21 · 149 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) D. Alice, Bob and Candies
D. Alice, Bob and Candies题目链接-D. Alice, Bob and Candies题目大意A从左边吃糖,B从右边吃糖,要求每个人吃尽可能少的糖果,且满足在这一步中吃的糖果的数量大于另一个玩家在上一步吃的糖果的数量直到所有糖都被吃完。求吃糖次数以及他们各自的吃糖个数解题思路双指针模拟双指针模拟双指针模拟以l,rl,rl,r分别为左右指针,当l<=rl<=rl<=r,即糖没被吃完时,我们可以模拟以下过程用cntcntcnt记录吃糖的次数,如果c原创 2020-05-11 23:47:44 · 194 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) B. Same Parity Summands
B. Same Parity Summands题目链接-B. Same Parity Summands题目大意给你一个数nnn,构造一个长度为kkk且元素奇偶性都相同的序列,该序列中每个元素都大于000解题思路贪心贪心贪心如果kkk个数全部是奇数,可以让前k−1k−1k−1个数都为111,最后一个数为n−(k−1)n−(k−1)n−(k−1),但是需要判断n−(k−1)n−(k−1)n−(k−1)是否大于零且是奇数如果kkk个数全部是偶数,可以让前k−1k−1k−1个数都为222,最后一原创 2020-05-11 12:32:09 · 209 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) E. Special Elements
E. Special Elements题目链接-E. Special Elements题目大意如果数组里的某个数等于该数组某一个区间内的所有数字之和,那么该数字即为特殊元素,求整个数组的特殊元素的数量解题思路在输入时用cnt[]数组记录数组中每个数出现的次数,并用pre[]记录前缀和双重循环遍历前缀和数组,求出所有长度大于等于2的区间和tmp=pre[j]-pre[i-1],然后判断这个区间和是否等于数组内某个数如果cnt[tmp]不等于0,就用ans加上cnt[tmp],即大小为tmp原创 2020-05-11 02:32:27 · 175 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) C. K-th Not Divisible by n
C. K-th Not Divisible by n题目链接-C. K-th Not Divisible by n题目大意给你一个数nnn,请你找出不能被nnn整除的第kkk个数解题思路首先能被nnn整除的数一定是000和nnn的倍数,那么能被nnn整除的数就为0,n,2n…0,n,2n…0,n,2n…所以相邻两个能被nnn组成的数构成的区间内有n−1n-1n−1个不能被nnn整除的数然后我们只需判断第kkk个数在第几个区间内第几个数即可,记得特判一下k%(n-1)==0,即是某区间第0原创 2020-05-11 02:11:45 · 186 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) A. Sum of Round Numbers
A. Sum of Round Numbers题目链接-A. Sum of Round Numbers题目大意给你一个数nnn,把这个数拆成若干个除首位都是000的数字的和,输出拆分的后的每个数解题思路按照字符串的形式输入,然后遍历字符串,如果该位不为0,就在该位数字后加上相应位数的000,存入vector然后输出vector的大小,再输出vector中存入的所有数即可具体操作见代码附上代码#pragma GCC optimize("-Ofast","-funroll-all-lo原创 2020-05-11 01:46:54 · 165 阅读 · 0 评论 -
2019 JUST Programming Contest I. Array Negations
I. Array Negations题目链接-I. Array Negations题目大意解题思路附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &(-x))#def...原创 2020-05-09 02:49:37 · 177 阅读 · 0 评论 -
2019 JUST Programming Contest J. Grid Beauty
J. Grid Beauty题目链接-J. Grid Beauty题目大意解题思路附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &(-x))#define endl...原创 2020-05-08 17:09:40 · 133 阅读 · 0 评论 -
2019 JUST Programming Contest H. The Universal String
H. The Universal String题目链接-H. The Universal String题目大意解题思路附上代码#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long long#define lowbit(x) (x &...原创 2020-05-08 17:02:02 · 196 阅读 · 0 评论