CF
codeforce 竞赛
BNDSllx
算法自媒体公众号:GTAlgotirhm,欢迎关注转发!
https://mp.weixin.qq.com/s?__biz=Mzg3NzMzNzU1MA==&mid=2247484346&idx=3&sn=7a3cf5f25cb8df7a958842369b4faca4&chksm=cf25cd1bf852440d4d68b75b023d547b568c06d830f0f0fff50b216d73fa3bd848ace6e7cc28&token=1029780947&lang=zh_CN#rd
展开
-
Codeforces Round #637 (Div. 2) ——C. Nastya and Strange Generator 题解
题目链接:https://codeforces.com/contest/1341/problem/C这是一道看懂了题也得想半天的思维题,捋一下思路先(1)给定n,要把1-n的n个数安排到数组的1-n位置,安排的过程如下(2)先计算 r 数组,对于 r[i] 必须满足 r[i] >= i 且 r[i]没有被占用,换句话说,每一个元素必须大于等于当前对应的下标,且这个元素的位置还空着...原创 2020-04-24 11:14:30 · 213 阅读 · 0 评论 -
Codeforces Round #637 (Div. 2) ——B. Nastya and Door 题解
题目链接:https://codeforces.com/contest/1341/problem/B题意:(1)给定区间(l, r),在这开区间中某一点若满足 h(i) > h(i - 1)并且 h(i) > h(i + 1),就称作一个peak(2)把一个长为k的木头扔下去,碰到一个peak就断一次,问最多能断成几截,也就是说找到一个区间(l, l + k - 1),中间的...原创 2020-04-24 10:42:33 · 252 阅读 · 0 评论 -
Codeforces Round #637 (Div. 2) ——A. Nastya and Rice 题解
题目链接:https://codeforces.com/contest/1341/problem/A签到题,根据Note推导即可。代码如下:#include <bits/stdc++.h>using namespace std; int main() { int t; cin >> t; while(t--) { int n, a, b, c, d...原创 2020-04-24 10:33:24 · 418 阅读 · 1 评论 -
Codeforces Round #636 (Div. 3) ——D. Constant Palindrome Sum 题解
题目链接:https://codeforces.com/contest/1343/problem/D题意是说改变给定数组中某些元素,使得a[i]与a[n - i - 1]的和为常数。遍历每一对,假设这一轮读到的数是 x 和 y(x < y),那么改变其中一个,最大和最小的和是多少呢?将较小的 x 变成 k,得到最大和 y + k将较大的 y 变成 1,得到最小和 x + 1所以对...原创 2020-04-22 23:06:08 · 281 阅读 · 0 评论 -
Codeforces Round #636 (Div. 3) ——C. Alternating Subsequence 题解
题目链接:https://codeforces.com/contest/1343/problem/Calternative看了半天最后还是去了百度翻译…题意是说在整个数组中选取一个alternative(正负交替)的子数组,使其元素和最大。简单模拟,从前往后遍历,遇到符号变换则取最大值,加到结果中。(要注意给的第四个样例越界了,所以要用long long)代码如下:#include &...原创 2020-04-22 22:52:37 · 221 阅读 · 0 评论 -
Codeforces Round #636 (Div. 3) ——B. Balanced Array 题解
题目链接:https://codeforces.com/contest/1343/problem/B读题,长度为 n 的数组分成前一半和后一半,要求元素互不相同,并且前一半偶数的和等于后一半奇数的和,说明 n 必须能整除4.构造则是前一半 2、4、6…,后一半1、3、5…,右边留一个位置,用来放一个奇数使两边之和相等。代码如下:#include <bits/stdc++.h>...原创 2020-04-22 22:49:42 · 303 阅读 · 0 评论 -
Codeforces Round #636 (Div. 3) ——A. Candies 题解
题目链接:https://codeforces.com/contest/1343/problem/A签到题,for循环暴力枚举即可。代码如下:#include <bits/stdc++.h>using namespace std;typedef long long ll; int main() { int t; scanf("%d", &...原创 2020-04-22 22:46:09 · 298 阅读 · 0 评论 -
Codeforces Round #634 (Div. 3) ——E2. Three Blocks Palindrome (hard version)题解
题目链接:http://codeforces.com/contest/1335/problem/D与easy version 不同的是,数据量变大了,所以需要改变算法。维护二维vector记录每个数字出现的位置,并用二维数组cnt(i, j)记录节点 i 之前数字 j 出现的次数(就是easy version 里的前缀和)改进算法是对200个可能出现的数字做循环:(1)sz记录该数字出现...原创 2020-04-19 14:40:02 · 218 阅读 · 0 评论 -
Codeforces Round #634 (Div. 3) ——E1. Three Blocks Palindrome (easy version)题解
题目链接:http://codeforces.com/contest/1335/problem/D对于结点k,维护两个数组:前缀和计算k之前所有结点中各数字出现的次数,后缀和计算k之后所有节点中各数字出现的次数。需要找的回文串有三部分,我们用双指针 i, j 表示,把字符串分成三部分:(1, i-1), (i, j), (j+1, n),用 i 的前缀和和 j 的后缀和中各数字出现的次数...原创 2020-04-18 22:10:17 · 232 阅读 · 0 评论 -
Codeforces Round #634 (Div. 3) ——D. Anti-Sudoku题解
题目链接:http://codeforces.com/contest/1335/problem/D每个样例给定一个9*9数独,要求变换不超过9个数,使得其变成anti-数独,即每行每列每个九宫格至少有两个一样的。耍赖思路:把所有的1变成2代码如下:#include <bits/stdc++.h>using namespace std;typedef long long ...原创 2020-04-14 13:14:32 · 258 阅读 · 0 评论 -
Codeforces Round #634 (Div. 3) ——C. Two Teams Composing题解
题目链接:http://codeforces.com/contest/1335/problem/C给定数组,要求从中选取一部分平均分成两组,第一组互不相同,第二组完全相同。用桶记录每个数出现的次数,并用mx记录最大的那个,另外遍历所有桶,用cnt记录桶里有货的数量。例如(1,1,1,2,3)中1出现的次数最多,mx = 3,一共出现了3个不同的数,cnt = 3这两个数要比较一下,如果m...原创 2020-04-14 13:12:05 · 172 阅读 · 0 评论 -
Codeforces Round #634 (Div. 3) ——B. Construct the String题解
题目链接:http://codeforces.com/contest/1335/problem/B每组样例给定a,b,c,要求构造长度为a的字符串,满足所有该串的长度为b的子串中所包含的不同字母有c个。b其实没用,只需要控制长度为a的前提下,让c个字母循环出现就可满足。代码如下:#include <bits/stdc++.h>using namespace std;typ...原创 2020-04-14 13:05:07 · 161 阅读 · 0 评论 -
Codeforces Round #634 (Div. 3) ——A. Candies and Two Sisters题解
题目链接:http://codeforces.com/contest/1335/problem/A题意就是给x个糖果,分给两个人,要求给第一个人的糖果必须大于给第二个人的,问有几种分法。就是个口算题代码如下:#include <bits/stdc++.h>using namespace std; int main() { int t; scanf("%d"...原创 2020-04-14 13:02:12 · 240 阅读 · 0 评论 -
Codeforces Round #633 (Div. 2) ——C. Powered Addition题解
题目链接:http://codeforces.com/contest/1339/problem/C纠结了最长时间的一道题。。。最开始我的思路是从前往后遍历,只要发现a[i] < a[i - 1]就加上当前秒数对应的幂次,然后把后面的所有数都加上这个相同的数,时间+1.但是这样最后一直是WA,过了几个小时发现不需要后面的数一直加,比如相邻两个数差值为9,只需要第一秒加一次,第四秒加一次就刚...原创 2020-04-13 18:09:24 · 205 阅读 · 0 评论 -
Codeforces Round #633 (Div. 2) ——B. Sorted Adjacent Differences题解
题目链接:http://codeforces.com/contest/1339/problem/B题意是说,给定数组,将其重新排序,使得得到的数组相邻元素之间的差的绝对值不递减。容易想到的第一步是读入后排序,然后按照最小、最大、次小、次大、第三小、第三大…的方式排列即可。需要注意的是这样输出的是差的绝对值不递增的序列,所以要捣鼓一下。代码如下:#include <bits/stdc+...原创 2020-04-13 18:05:13 · 208 阅读 · 0 评论 -
Codeforces Round #633 (Div. 2) ——A. Filling Diamonds题解
题目链接:http://codeforces.com/contest/1339/problem/A枚举n = 1,2,3,4可知,选取一个竖着的菱形填充之后,剩下的位置必须全部为横着的菱形填充,所以总的方式与图形中可选取竖着的菱形数量相同代码如下:#include <bits/stdc++.h>using namespace std;typedef long long l...原创 2020-04-13 18:01:28 · 300 阅读 · 0 评论 -
Codeforces Round #631 (Div. 2)——A.Dreamoon and Ranking Collection题解
题目链接:http://codeforces.com/contest/1330/problem/A题目意思是说,给定已经参加过的比赛数n和还要参加的数量x,以及参加过比赛的名次a1-an,问参加完剩下的x场比赛,最多能积攒多少连续的名次。用一个桶记录所有的名次,然后把x场比赛从前往后塞进去就行,最后还要注意塞完了之后后面的名次是否已经获得过了。代码如下:#include <bits/...原创 2020-04-12 11:48:32 · 172 阅读 · 2 评论 -
Educational Codeforces Round 85——C. Circle of Monsters题解
题目链接:http://codeforces.com/contest/1334/problem/C思路是找到第一个小可爱,打掉之后就可以按顺序往下打了,因为如果他隔壁的没死肯定要打掉,隔壁的去世的话可以接着往下打。所以用c数组记录差分,然后记录当前的sum,最后比较所有sum,找出最小的那个小可爱就对了。代码如下:#include <bits/stdc++.h>using n...原创 2020-04-11 12:28:25 · 222 阅读 · 0 评论 -
Educational Codeforces Round 85——B. Middle Class题解
题目链接:http://codeforces.com/contest/1334/problem/B题目意思是,给定一个值,判断一个小镇的人的财富经过互相平均,最多有多少人的财富能大于等于这个值。先进行排序,然后从大到小贪心判断平局值是否大于等于该给定值。代码如下:#include <bits/stdc++.h>using namespace std;typedef long...原创 2020-04-11 11:20:54 · 157 阅读 · 0 评论 -
Educational Codeforces Round 85——A. Level Statistics题解
可以理解为,同一时刻有两个指标,一个是尝试过的题目,一个是通过的题目。底下的提示写的很明显了,有这样几种不可能的情况:(1)同一时刻下,通过的题目数不可能大于尝试过的题目数,即c(i)<= p(i)(2)相较于上一时刻,通过的题目数和尝试过的题目数都不会减少,即c(i) >= c(i - 1), p(i) >= p(i - 1)(3)相较于上一时刻,新通过的题目数不会大于...原创 2020-04-11 09:37:48 · 317 阅读 · 0 评论