![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CodeForces
园游会不打烊
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #681 (Div. 2 题解)
A. Kids Seating题目大意:从1−4∗n1-4*n1−4∗n 这些数中选出nnn个数,任意两个数(a,ba,ba,b)不满足:1、gcd(a,b)=1gcd(a,b)=1gcd(a,b)=12、aaa整除bbb或者bbb整除aaa解题思路:方法貌似很多,我是从后面每两个选出来。代码:#include<bits/stdc++.h>using namespace std;const int maxn = 3e5+10;const int mod = 99824435原创 2020-11-04 17:10:07 · 206 阅读 · 0 评论 -
Educational Codeforces Round 96 E. String Reversal
题意给你一个字符串,每次你能交换两个相邻的字符,问要把这个字符串变的和原来相反,最少需要多少次操作。解题思路:相同的字符的相对位置在交换后不变一定最优,接下来想到冒泡排序,我们每次完成最后一个字符,记录下这个字符在原数组中最后次出现的位置,需要的操作次数就是他们的位置相减,这个字符完成后,原数组在它后面的字符的位置已经都向前移动了一位,我用了树状数组维护,然后只要每次完成最后一个字符就好了。代码:#include<bits/stdc++.h>using namespace std;原创 2020-10-11 23:12:25 · 88 阅读 · 0 评论 -
Educational Codeforces Round 96 D. String Deletion
题意:给你一段01序列,每次操作(以下是一次操作的两个步骤):1、你选择一个数删去。2、前缀和相同的都删去(例如:110011,就删去前两个1,具体看样例)问最多能执行几次操作。解题思路:我是这样做的:首先如果没有第1步,那么答案就是连续相同段的段数,现在考虑第1步:1、如果当前段连续相同的数字个数超过1,那么我就从中选一个执行第1步(反正这个操作2中也一定会被删去)2、如果当前段连续相同的数字个数只有1,如果我现在删除这个数,那么第二步将会删除下一段相同的数(也就是说答案会减少),那么考虑原创 2020-10-11 23:07:43 · 103 阅读 · 0 评论 -
Educational Codeforces Round 96 C. Numbers on Whiteboard
题意:给你1、2、3...n1、2、3...n1、2、3...n一共nnn个数,每次操作可以选择两个数a,ba,ba,b拿出,再放入(a+b)/2(a+b)/2(a+b)/2(向上取整)。在n−1n-1n−1次操作后只会剩下一个数,问这个数最小是多少。解题思路:每一次操作,这些数的和就减少(a+b)/2(a+b)/2(a+b)/2,那么贪心,每次选择最大的两个数即可,并且最后答案一定是222。代码:#include<bits/stdc++.h>using namespace std;原创 2020-10-11 22:53:39 · 129 阅读 · 0 评论 -
Educational Codeforces Round 96 B. Barrels
题意:给你nnn个桶,每个同理开始有一些水,每次操作你可以选择两个桶,将一个桶里的水全部倒入另一个桶(桶的容量无限),你能最多操作kkk次,问这些桶中,水最多的桶和水最少的桶里的水的差是多少。解题思路:显然把水都倒到水最多的那个桶最好,每次都选择除了那个"被倒的桶"外水最多的倒就可以了,那么只要排个序即可。代码:#include<bits/stdc++.h>using namespace std;const int maxn = 2e5+5;const int mod = 1e9原创 2020-10-11 22:46:03 · 80 阅读 · 0 评论 -
Educational Codeforces Round 96 A.Number of Apartments
题意:给你一个数nnn,能否用若干个3、5、7的和组成。解题思路:考虑3、5、7取模3的余数。如果n%3=0n\%3=0n%3=0,那么只要用n/3n/3n/3个333来组成。如果n%3=1n\%3=1n%3=1,那么一定要用一个777,然后少用两个333就好了,特判n<7n<7n<7。如果n%3=2n\%3=2n%3=2,那么一定要用一个555,然后少用一个333就好了,特判n<5n<5n<5。代码:#include<bits/stdc++.h&g原创 2020-10-11 22:36:35 · 80 阅读 · 0 评论 -
Codeforces Round #674 (Div. 3) 题解
A. Floor Number题意:有一栋楼,第一层有两个房间(编号1,21,21,2),第二层有xxx个房间(编号3,4,...,2+2∗x3,4,...,2+2*x3,4,...,2+2∗x),以后每一层也都是xxx个房间,现在给你房间编号,输出它得楼层。解题思路:理解题意后直接做就好了。代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e5+10;int main(){int t;cin&g原创 2020-09-28 23:28:49 · 356 阅读 · 0 评论 -
Codeforces Round #672 (Div. 2)题解
A. Cubes Sorting题意:给你一个长度为nnn的数组,每次可以选择两个相邻的交换,能否交换不超过n∗(n−1)2−1\frac{n*(n-1)}{2}-12n∗(n−1)−1次,是整个数组非递减。解题思路:这个类似冒泡排序,最坏情况就是换了n∗(n−1)2\frac{n*(n-1)}{2}2n∗(n−1)次,所以只有在最坏情况下才不能实现,最坏情况就是原数组递减。代码:#include<bits/stdc++.h> using namespace std;type原创 2020-09-25 16:17:22 · 229 阅读 · 0 评论 -
Codeforces Round #669 (Div. 2)A-D题解
A. Ahahahahahahahaha题意:一个长度为nnn只包含0和1的序列,你最多可以移出其中n/2n/2n/2个,让下标为奇数的数的和等于下标为偶数的和,题目保证有解。解题思路:我是这样做的,首先如果开始数组就符合条件就直接输出,否则我只删一个数,先求s[i]s[i]s[i]表示第iii个数到最后一个数的奇位数和偶位数的差,接下来枚举要删除的数,如果这个数删除,那么它后面奇位数变成偶位数,偶位数变成奇位数,s[i+1]=−s[i+1]s[i+1]=-s[i+1]s[i+1]=−s[i+1],原创 2020-09-09 17:15:15 · 131 阅读 · 0 评论 -
Codeforces Round #668 (Div. 2)A-D题解
A. Permutation Forgery题意:给你一个长度为nnn的排列ppp,定义F(p)=sort(p1+p2,p2+p3,......,pn−1+pn)F(p)=sort(p_1+p_2,p_2+p_3,......,p_{n-1}+p_n)F(p)=sort(p1+p2,p2+p3,......,pn−1+pn),其中sort(a1,a2,...,an)sort(a_1,a_2,...,a_n)sort(a1,a2,...,an)表示对a1−ana_1-a_na1−an原创 2020-09-09 16:33:56 · 207 阅读 · 0 评论 -
Codeforces Round #667 (Div. 3) 题解
A. Yet Another Two Integers Problem题目描述:给你两个数a,ba,ba,b,你要通过最少的操作次数把aaa变成bbb,每次操作可以让aaa加上或者减少区间[1,10][1,10][1,10]内的数。解题思路:贪心除了最后次每次加十或减十。代码:#include <bits/stdc++.h>using namespace std;const int maxn=1e6+5;int main(){ int t; cin>>t; w原创 2020-09-05 18:21:39 · 176 阅读 · 0 评论 -
Codeforces Round #666 (Div. 2) 题解
A. Juggling Letters题目描述:给nnn个字符串,每次操作你能将一个字符串的一个字符移动到任意字符串的任意字符,可以进行无数次操作,请问最后能将所有字符串都变成一样么。解题思路:看懂题目就很简单了,因为可以操作无数次,所以只要判断所有字符的个数是否是nnn的倍数就可以了,如果所有字符的个数是否是nnn的倍数那么一定可以达到要求。代码:#include <bits/stdc++.h>using namespace std;int main(){ int t; c原创 2020-08-31 18:11:17 · 222 阅读 · 0 评论 -
Codeforces Round #665D Maximum Distributed Tree题解
题目描述:给你一棵树,你需要将边赋予边权,所有边权的值都要大于0并且它们乘积要是kkk。求所有点对路径的和最大(具体可以看下样例),kkk按质因数分解的形式给出,当时没过是因为没搞懂这一句话的意思the number of 1-s among all n−1 integers must be minimum possible.这句话应是说要让边权为111的边尽量少,就是说如果给出的质数个数小于边数,就只能再给一些边赋边权111。解题思路:不难想到用贪心将要用到边次数多的赋更大的值,那么我们就需要求出每原创 2020-08-22 11:30:43 · 115 阅读 · 0 评论