Codeforces
CaprYang
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #552 (Div. 3) 题解
题目链接A. Restoring Three Numbers#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;con...原创 2019-04-20 22:47:58 · 815 阅读 · 2 评论 -
Codeforces Round #538 (Div. 2) D. Flood Fill 区间dp
题解题目大意 给你一个颜色序列 每次可以把一段连续相同的颜色改为其它颜色 问最少多少次操作能把一个序列改成同一个颜色首先考虑,如果初始状态一段连续的颜色相同则可以把他压缩成一个颜色而不影响结果区间dp求解 令d[i][j]表示区间[i, j]范围内变成同一个颜色所需要的最少次数,初始状态的每个颜色肯定为0即d[i][i] = 0枚举区间长度,枚举区间左端点,如果当前区间左右端点颜色相同则可...原创 2019-02-11 21:10:03 · 359 阅读 · 0 评论 -
Codeforces Round #538 (Div. 2) B. Yet Another Array Partitioning Task 思维
题解题目大意 给你若干个数字 划分成k组 每组里面取m个最大值 要求每组的最大值总和最大只需要在整个数组里面取k*m个最大值并记录所在位置 按照顺序遍历数字如果当前数字是被选中的最大值则cnt++当cnt到达m时则说明当前位置是当前分段的最后位置 输出即可AC代码#include &lt;stdio.h&gt;#include &lt;bits/stdc++.h&gt;#define...原创 2019-02-11 20:13:42 · 418 阅读 · 0 评论 -
Codeforces Round #538 (Div. 2) C. Trailing Loves (or L'oeufs) 分解质因数
题解题目大意 n!在b进制下末尾有多少个0有一道经典例题n!在10进制下末尾有多少0,因为10=5*2且5和2都是质且5的个数肯定没2多,所以只需要统计n!中5有多少个即可在b进制下先考虑可以被分解为质因数b=x*x*x*…y*y*y*…z*z*z… 如果n!中因子xyz…的数量都满足则在b进制下末尾一定有一个0末尾0的个数就是(每个质因子数量/b中这个质因子数量)然后取min再分解质因...原创 2019-02-11 20:31:00 · 307 阅读 · 0 评论 -
Codeforces Round #539 (Div. 2) D. Sasha and One More Name 暴力 思维
题解题目大意,给一个回文串,可以将回文串切成若干段再拼接,问最少切多少段能拼出和原有串不同的回文串如果所给回文串除了中心位置(长度为奇数)其它都相同则无论怎么拼接出来的回文串都和原串相同,直接impossible对于任意非第一种情况的回文串,从中心分为两部分来看,必能在一测找到切割反转后不等于另一侧的位置则切割两次必定能拼成和原串不同的回文串(如abaacaaba,左侧ab|aa右侧aa|...原创 2019-02-17 18:53:45 · 369 阅读 · 0 评论 -
Codeforces Round #539 (Div. 2) C. Sasha and a Bit of Relax 位运算 思维
题解题目大意,给一个数值序列,问长度为偶数的区间,左一半的异或和等于右一半的异或和的区间个数当一个区间异或值左一半等于右一半时则整个区间异或和为0,整个区间异或和为0的个数可以用前缀异或和+数组记录每个异或值的个数来处理考虑每个异或和为0的区间,则对于每个二进制位总数都为偶数,从中间将区间分为两半,左右侧的个数的奇偶性必然相同所以只需要求出异或和为0的区间个数即为答案AC代码#incl...原创 2019-02-17 18:40:26 · 191 阅读 · 0 评论 -
Codeforces Round #539 (Div. 2) B. Sasha and Magnetic Machines 暴力
题解题目大意 给若干个数字,只能使用一次操作将一个数字乘k让另一个数字除以k,要求被除的数字能整除,也可以不操作,求所有数字的和最小值由于数值范围很小,统计每个数值出现次数,O(N^2)暴力尝试将一个数字*k一个数字/k找到能减少的值的最大值,最后加上总和AC代码#include <stdio.h>#include <bits/stdc++.h>#define ...原创 2019-02-17 18:24:07 · 805 阅读 · 0 评论 -
Codeforces Round #540 (Div. 3) E. Yet Another Ball Problem 构造
题解题目大意,要求构造一个(ai, bi)序列,ab的值在[1, k]内,要求同一个(ai, bi)内aibi不能相同,相邻的两个ai或bi不能相同,所有的a或b不能相同,没有两个完全一样的(ai, bi)。当n大于k*(k-1)时则无解(注意相乘炸int),否则按照完全图的方式构建相邻的两个顺序反转一下(1, 2)(1, 3)(1, 4)(2, 3)(2, 4)(3, 4)AC代码#in...原创 2019-02-21 23:43:00 · 313 阅读 · 0 评论 -
Codeforces Round #540 (Div. 3) D. Coffee and Coursework 二分
题解题目大意,有若干杯咖啡,每杯咖啡有一个收益a[i],不限制每天喝多少杯,但是每天的第k杯收益会减少k-1,问总收益大于n的所需最少天数。使用二分答案求解,每次喝肯定是挑剩余最大的去喝,check时mid天每天都只先喝第一杯如果不够再喝第二杯第三杯。。在喝的过程中如果当前杯的收益小于等于当前所减少的收益则说明答案不可行。AC代码#include <stdio.h>#inc...原创 2019-02-21 23:23:00 · 275 阅读 · 0 评论 -
Codeforces Round #540 (Div. 3) C. Palindromic Matrix 构造
题解题目大意,给你n*n个数值,要求构造一个n阶对称方阵,方阵上下对称左右对称沿主对角线对称。根据题目所给示例可以发现,n为偶数情况每个数值至少出现4次,n为奇数情况行坐标或列坐标为(n+1)/2时数值最少出现两次(标号从1开始),最中心位置数值最少出现一次。根据规律进行构造即可。AC代码#include <stdio.h>#include <bits/stdc++....原创 2019-02-21 23:13:41 · 515 阅读 · 0 评论 -
Codeforces Round #540 (Div. 3) B. Tanya and Candies 前缀和
题解题目大意,给你一个序列,删去一个数值之后,要求剩下序列奇数和偶数的和相同,问有多少种删法。对序列做前缀和,奇加偶减,遍历每个位置,检测除去当前位置前半部分前缀和和后半部分前缀和是否相等(后半部分删去后奇偶互换)AC代码#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed...原创 2019-02-21 23:06:24 · 591 阅读 · 0 评论 -
Educational Codeforces Round 49 (Rated for Div. 2) D. Mouse Hunt tarjan | 拓扑排序
题解题目大意 有一些房间 每个房间布置老鼠夹需要一定代价 一个房间只能单向到达另一个房间 老鼠最开始可能出现在任何房间 问无论如何都能抓到老鼠的最小代价按照题意 如果在一个环上则只需要在环内选取一个最小代价的点,如果在一个链上则只需要选取链的终点(终点可以为环)tarjan:使用tarjan算法求出有向图的强连通分量,并缩为一个点代价为强连通分量内最小代价,最后只需要对缩点后出度为0的点求...原创 2019-02-12 20:11:58 · 489 阅读 · 0 评论 -
Codeforces Round #541 (Div. 2) B. Draw!
题解题目大意,两个队伍打比赛,按照时间顺序给出部分比分结果,最后一个为结束时的结果,问比赛过程中最多有多少次比分相同直接遍历所给比分,设两个队伍比分为a和b,min(a[i], b[i]) - max(a[i - 1], b[i - 1]) + 1即为答案,注意负数如果ab相同则说明(a, a)这个已经计算进答案,让当前的a++防止重复计算AC代码#include <stdio.h...原创 2019-02-25 17:34:52 · 524 阅读 · 0 评论 -
Codeforces Round #553 (Div. 2) 题解
题目链接A. Maxim and Biology取连续一段改为ACTG的最小代价#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll;const int INF = 0x3f...原创 2019-04-20 23:12:59 · 1028 阅读 · 2 评论 -
Codeforces Global Round 2
A. Ilya and a Colorful Walk#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusing namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const l...原创 2019-04-09 21:51:28 · 637 阅读 · 0 评论 -
Educational Codeforces Round 36 (Rated for Div. 2) C. Permute Digits 贪心 暴力
题解题目大意,AB两个数字,A的每位数字任意排列找到满足小于等于B的最大数值。暴力枚举A串的每个位置使用9~0的某个字符,从9逐渐减少然后尝试。如果当前位置i使用数字j,然后对i+1位置后面的字符进行从小到大的排序, 如果排序后使用stoll转为数值小于等于B则说明当前位置使用j可行,如果不可行则说明后面怎么排列都不会小于等于B,减少j继续尝试,由于题目保证有解则一定能找到满足的。AC代码...原创 2019-03-15 13:34:02 · 155 阅读 · 0 评论 -
Codeforces Round #211 (Div. 2) C. Fixing Typos 贪心
题解题目大意,给一个字符串,三个连续相同的,或,aabb连续两个相同的不满足条件,问删去最少的字符后满足条件的串。对于一个串一旦出现不满足的则无论后面怎么处理当前位置都已经不满足,所以要删去最后添加的字符。使用另一个串保存结果,不断的将字符添加进来,检测前4个字符是否满足,如果不满足则删除最后一个。AC代码#include <stdio.h>#include <bit...原创 2019-03-15 13:24:24 · 213 阅读 · 0 评论 -
Codeforces Round #200 (Div. 1) A. Rational Resistance 数论
题解题目大意,给出a/b的电阻值,问最少使用多少个阻值为1的电阻串联或并联成当前阻值。对于a/b的阻值如果a大于b则可以拆分出整数c,即a/b=c+(a-bc)/b,则(a-bc)/b串联c个阻值为1的电阻可以得到a/b。如果a小于b,对于并联上c个阻值为1的电阻根据电阻公式可得1/((b-a*c)/a+c)=a/b,即a/b的电阻可由a/(b-c*a)并联c个得到。所以对于a/b电阻所需...原创 2019-03-15 12:39:22 · 200 阅读 · 0 评论 -
Codeforces Round #545 (Div. 2) C. Skyscrapers
题解题目大意,n*m矩阵每个位置作为一个独立的询问,问将当前行和列的数值拼在一起离散化为1~x的数值,要求x最小,最后输出每个位置的x。如果对着每个位置将行列数据加入vector后离散化复杂度O(nm(n+m))过高。每个位置预处理4个信息,当前位置的值v在当前列的离散化结果中,有lc个比v小的,有gc个比v大的。当前位置的值v在当前行的离散化结果中,有lr个比v小的,有gr个比v大的。每...原创 2019-03-15 11:45:36 · 167 阅读 · 0 评论 -
Codeforces Round #545 (Div. 2) B. Circus 枚举 公式
题解题目大意,n个人,有些可以表演小丑有些可以表演杂技,要求平分为两组,第一组可表演小丑的数量等于第二组可表演杂技的数量。n不是很大O(N^2)复杂度可以通过,什么都不能表演的记为a,只能表演小丑记为b,只能表演杂技记为c,都可以记为d。枚举第一队b的数量和d的数量,根据第一组可表演小丑数量等于第二组可表演杂技数量可得方程b + d == (cn - c) + (dn - d)。cn, d...原创 2019-03-15 11:19:10 · 292 阅读 · 0 评论 -
Codeforces Round #541 (Div. 2) F. Asya And Kittens 并查集 | 启发式合并
题解题目大意,1到n编号的数字最开始每个都属于一个单独的集合,告诉你相邻的两个集合并且合并在一起,最终会合并为同一个集合,输出任意满足条件的原序列。并查集解法:使用两个并查集vl, vr分别记录当前集合的最左元素和最右元素,在合并时将记录最左元素的根节点接在左侧集合的根节点下,记录右侧的接在右侧根节点下即vr[ar] = br, vl[bl] = al,ar, br为两个集合的根节点。在拼...原创 2019-02-25 18:04:23 · 314 阅读 · 0 评论 -
Codeforces Round #541 (Div. 2) D. Gourmet choice 并查集 拓扑排序
题解题目大意,一个人第一天吃了n份食物第二天吃了m份食物,给你一个n*m的矩阵表示第一天的某份食物和第二天的某份食物哪个更好吃或一样好吃,要求你对每个食物进行打分满足所给矩阵。首先使用并查集将一样好吃的情况缩为一个点进行处理,如果a>b则b<—a建一条单向边,如果a<b则a—>b建一条单向边。初始入度为0的点评分设置为1,使用拓扑排序将当前点指向的点评分对当前点评分+...原创 2019-02-25 17:46:11 · 403 阅读 · 0 评论 -
Codeforces Round #541 (Div. 2) C. Birthday 贪心
题解题目大意,一个数值序列组成环形,要求相邻两个之间差的绝对值的最大值尽量小,输出排列结果。输出的序列为先升后降这样才能保证差的最大值最小,直接从小到大排序,先正着输出奇数再倒着输出偶数即可。AC代码#include <stdio.h>#include <bits/stdc++.h>#define fst first#define sed secondusi...原创 2019-02-25 17:37:44 · 316 阅读 · 0 评论 -
Educational Codeforces Round 60 (Rated for Div. 2) C. Magic Ship 二分
题解题目大意,一艘船在海上受风力移动,给出每秒的风向,船每秒也可以自己动1格,问到达终点的最短时间使用二分答案求解,check时按照风向走mid次,最后计算所处位置到达终点的曼哈顿距离是否小于mid(表示mid秒船自己移动机会使用最合理的方式安排)。由于答案可能很大直接模拟走mid次会超时,将mid是n的整数倍部分直接移动再将余下的模拟移动。AC代码#include &amp;lt;stdio....原创 2019-02-21 22:11:47 · 265 阅读 · 0 评论 -
Educational Codeforces Round 60 (Rated for Div. 2) D. Magic Gems 矩阵优化
题解题目大意,问单个的1与长度为m的0能组成多少个长度为n的序列,1和0有无限多个。暴力打表发现当m等于2时候与斐波那契数列相同,其它情况为f[n] = f[n - 1] + f[n - m],递推式很简单但是n很大直接递推超时。使用矩阵优化进行转移复杂度O(m^3*logn)AC代码#include <stdio.h>#include <bits/stdc++.h&...原创 2019-02-21 22:22:57 · 215 阅读 · 0 评论 -
Codeforces Round #532 (Div. 2) C. NN and the Optical Illusion
题解题目大意 一个圆a外面套着一圈b 给你a的半径和b的数量 求b半径如图 设b半径为x = r * sin(α) / (1 - sin(α)) α为红蓝色夹角=360/b数量AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;con...原创 2019-01-15 10:02:58 · 533 阅读 · 0 评论 -
Codeforces Round #525 (Div. 2) B. Ehab and subtraction
题解题目大意 给一个数列n 每次将其中最小的元素取出并输出 整个序列非0元素全部减去这个最小元素往复操作k次将数组排序并除重 因为如果元素相同肯定减去之后另一个为0 记录一个减去的量每次取出最小的 输出值-减去量AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef l...原创 2018-12-05 14:16:48 · 295 阅读 · 0 评论 -
Codeforces Round #525 (Div. 2) A. Ehab and another construction problem
题解题目大意 给一个n找到满足四个条件式的a和b a和b可以相等除了1都可以找到a=b=n这种情况满足条件AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;int main()...原创 2018-12-05 14:09:02 · 274 阅读 · 0 评论 -
Codeforces Round #521 (Div. 3) E. Thematic Contests 暴力 前缀和
题解题目大意 每天完成若干个相同的任务 第二天完成的数量要求是前一天的两倍 不同天不能完成相同的任务 问最大任务完成数量统计相同编号的数量 向前做前缀和 暴力枚举最后一次的完成数量 每次除以二检测当前数量-天数(减去向前前缀和的贡献)是否大于0 大于则满足 每次结束检测是否为奇数 乘二不可能为奇数所以跳出AC代码#include &lt;stdio.h&gt;#include &lt;b...原创 2018-11-17 01:53:35 · 419 阅读 · 0 评论 -
Codeforces Round #521 (Div. 3) D. Cutting Out 二分
题解题目大意 给你一个序列 让你找到一个长度为k的序列 在原序列当中出现的次数最多满足单调性 二分出现次数 然后根据出现次数随意输出一个序列AC代码#include &lt;stdio.h&gt;#include &lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;const int INF = 0x3f3f...原创 2018-11-17 01:48:37 · 307 阅读 · 0 评论 -
Codeforces Round #521 (Div. 3) C. Good Array 思维
题解给你一个n数字的序列 从序列中删除某些元素让剩下的序列当中有一个数等于其它数字之和记录每个数字出现的次数 枚举每一个数字 尝试减去 如果原数列出现过减去之后和的一半则满足条件(需要排除自身a[i] == s2 / 2)AC代码#include &lt;stdio.h&gt;#include &lt;bits/stdc++.h&gt;using namespace std;type...原创 2018-11-17 01:46:27 · 498 阅读 · 0 评论 -
Codeforces Round #521 (Div. 3) B. Disturbed People 思维
题解题目大意 n个灯0关灯1开灯 101则中间的睡不着 问最少关掉多少个灯可以全都能睡着遇见101则将后面的1的灯泡关掉 这样解决10101的问题 计数输出即可AC代码#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;typedef long long ll;const int I原创 2018-11-17 01:40:32 · 428 阅读 · 0 评论 -
Codeforces Round #521 (Div. 3) A. Frog Jumping
题解题目大意 一个人从0开始偶数向右走a 奇数向左走b 问k次走多远偶数部分b和a抵消了一部分 奇数再加一个a即可AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;int ma...原创 2018-11-17 01:36:10 · 217 阅读 · 0 评论 -
Codeforces Round #515 (Div. 3) D. Boxes Packing
题解题目大意 n个物品m个篮子每个篮子容量为k 每个物品重量为a[i] 问能装多少物品 这个人是强迫症 如果没把所有物品装完则把第一个物品丢掉直接倒着装就行。。模拟一下 或者二分答案 主要是看懂题意AC代码#include &lt;stdio.h&gt;#include &lt;bits/stdc++.h&gt;using namespace std;typedef long lon...原创 2018-10-13 14:59:49 · 810 阅读 · 0 评论 -
Codeforces Round #515 (Div. 3) C. Books Queries
题解一个书架能在左侧放书能在右侧放书不能在中间插入 给你一个顺序在左侧或者右侧放某个编号的书 编号不会重复 问你某个编号距离左侧或者右侧的最近距离 保证查询有效每次在左侧或者右侧插入的时候记录一个lr左侧插入就–l在右侧插入就++r并且记录在数组a 查询编号在a的值到l和r的距离取minAC代码#include <stdio.h>#include <bits/stdc+...原创 2018-10-13 14:06:55 · 381 阅读 · 0 评论 -
Codeforces Round #515 (Div. 3) A. Vova and Train
题解题目大意 总长度为L 每到v的倍数位置都有一个路灯 现有一火车在[l, r]问在火车遮挡后 能看见多少个路灯(r - 1) / v计算左侧出现路灯数量L / v - r / v计算右侧出现路灯数量AC 代码#include &lt;stdio.h&gt;#include &lt;bits/stdc++.h&gt;using namespace std;typedef long l...原创 2018-10-13 13:48:48 · 537 阅读 · 0 评论 -
Codeforces Round #525 (Div. 2) C. Ehab and a 2-operation task
题解题目大意 给一个长度为n的序列 两种操作一种前缀全部加x 一种前缀模x 让你用至多n+1次操作将整个序列变为严格递增序列使用n次操作将序列每个位置都调整为模n后为位置-1的值 最后一次操作整体模n使用加法调时候倒着处理 利用i - ((a[i] + tot) % N) + N计算 并记录一个累加量tot 除了最后一个后面加上累加量计算AC代码#include <stdio.h&...原创 2018-12-05 14:23:40 · 450 阅读 · 0 评论 -
Codeforces Round #525 (Div. 2) D. Ehab and another another xor problem 交互 二进制 思维
题解交互题题目大意 有两个数字a和b要你去猜 你可以询问两个数字c和d 系统会反馈给你a ^ c和b ^ d的大小比较结果 左边大1右边大-1相同0 最多猜62次数值范围小于2的30次方 说明最多有30个二进制位 最开始使用一次确定a和b的大小关系 每个二进制位使用两次猜测 最后使用一次回答答案从高到低遍历二进制位 之前的位被异或掉了当前位就是最高位 起着决定性的作用 考虑当前位的状态 具...原创 2018-12-05 15:12:14 · 485 阅读 · 0 评论 -
Codeforces Round #532 (Div. 2) B. Build a Contest
题解题目大意 给你1到n的数字 当已有数字凑齐1到n则输出1否则0 如3 6 1 2 2 3 1 3输出000101使用两个数组 a记录每个数值出现的次数 b数组记录a的出现次数的出现次数 当b的值等于n的时候输出1AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef...原创 2019-01-15 09:55:50 · 577 阅读 · 0 评论 -
Codeforces Round #532 (Div. 2) A. Roman and Browser
题解题目大意 给你若干1和-1要求删去一些 剩余的和的绝对值最大数据量很小100 枚举每个余数不进行求和暴力求解AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const in...原创 2019-01-15 09:43:39 · 285 阅读 · 0 评论