cf
小飞猪Jay
远风知我意,微凉又深情。
展开
-
B. Jumps
题目:https://codeforces.com/contest/1455/problem/BYou are standing on the OX-axis at point 0 and you want to move to an integer point x>0.You can make several jumps. Suppose you’re currently at point y (y may be negative) and jump for the k-th time. Yo原创 2020-12-01 08:47:19 · 385 阅读 · 1 评论 -
Binary Table (Hard Version)(Easy Version)
https://codeforces.com/contest/1440/problem/C2题意:给出n,m,给出nm的矩阵,由0和1组成,每次你可以执行一个操作,选出22正方形中的三个数,将这三个数反转。问在有限的步骤之内将矩阵变为全为0的矩阵的操作数以及操作。简单和困难问题的差别就是,操作数上限的不同。思路:构造。从左上到右下开始遍历,遇到1就将它变为0,再将右侧的数和下面的数转变。因为右侧和下面相邻的数都将再之后的遍历中操作到,如果是1的话会将其变为零,所以无论怎样转换都没有影响。执行此操作原创 2020-11-23 21:50:23 · 224 阅读 · 0 评论 -
C. Chef Monocarp
题目:https://codeforces.com/contest/1437/problem/C题意:给出每个菜拿出的时间,当你在t秒的时候拿出了第i道菜,那这道菜的令人不愉快值为t-ai的绝对值。问你每道菜应该在什么时间拿出来能使得不愉快值最小。思路:dpdp还是很容易看出来的,至于转移方程就需要多看一会了。dp[i][j]=min(dp[i-1][j],dp[i-1][j-1]+abs(a[j]-i));dp[i][j]表示前i秒拿出了j道菜的不愉快的值。代码:#include &l原创 2020-10-28 22:55:55 · 245 阅读 · 0 评论 -
B. Reverse Binary Strings
题目:https://codeforces.com/contest/1437/problem/BYou are given a string s of even length n. String s is binary, in other words, consists only of 0’s and 1’s.String s has exactly n2 zeroes and n2 ones (n is even).In one operation you can reverse any subs原创 2020-10-28 22:11:38 · 516 阅读 · 0 评论 -
C. ABBB
题目:Zookeeper is playing a game. In this game, Zookeeper must use bombs to bomb a string that consists of letters ‘A’ and ‘B’. He can use bombs to bomb a substring which is either “AB” or “BB”. When he bombs such a substring, the substring gets deleted fro原创 2020-10-18 15:54:52 · 600 阅读 · 0 评论 -
B. Belted Rooms
题目:In the snake exhibition, there are n rooms (numbered 0 to n−1) arranged in a circle, with a snake in each room. The rooms are connected by n conveyor belts, and the i-th conveyor belt connects the rooms i and (i+1)modn. In the other words, rooms 0 and原创 2020-10-18 15:49:43 · 401 阅读 · 1 评论 -
A. Box is Pull
题目:Wabbit is trying to move a box containing food for the rest of the zoo in the coordinate plane from the point (x1,y1) to the point (x2,y2).He has a rope, which he can use to pull the box. He can only pull the box if he stands exactly 1 unit away from原创 2020-10-18 15:43:43 · 344 阅读 · 0 评论 -
codeforces C.Yet Another Counting Problem
题意:询问l 到 r 中有多少个数满足 (x(moda)modb)≠(x(modb)moda) 。思路:首先容易想到以a*b长度为一个区间进行划分,因为他们的答案是一样的。但是我们只进行这样的预处理再直接再区间里找是会超时。所以我们改进了一下,预处理之后直接O(1)的来找而不是线性的搜索。代码:#include<iostream>#include<bits/stdc+...原创 2020-04-27 19:27:06 · 303 阅读 · 0 评论 -
codeforces B. Binary Period
题意:给出一个只由 0和1 构成的子串 t ,要你求出一个原串,并且原串长度不大于两倍子串长度,同时原串的循环节最短。思路:仔细想想不难发现,当字串都是0或都是1的时候,原串只需要和字串一样即可;当字串既包含0又包含1的时候,原串只有两种可能,101010…或者是010101…。为什么这么说呢?因为原串的长度可以是字串的二倍,那我只需要在字串的每一位旁边补上和它不同的数字即可。比如说111...原创 2020-04-27 19:10:46 · 232 阅读 · 0 评论 -
codeforce. A. Little Artem
题意:给出行数和列数,问与W相邻B比与B相邻的W数量多1的排列思路:因为是A题,所有一定不是什么难题。想想就有了,BWWW…BWWW…BWWWBBBB可以看出,这样有规则地排列刚好可以保证题意。代码:#include<iostream>#include<iomanip>#include<bits/stdc++.h>using nam...原创 2020-04-13 19:30:16 · 144 阅读 · 0 评论 -
codeforce B. Two Cakes
题意:两个人从左边第一个位置出发,从小到大依次取得1到n,问做过的最短距离是多少。思路:贪心问题。因为我们很容易分析到,当一个人走到一个数字之后,他会向下一个数字走去,但是有两个位置,他就要选择一个。这里我们考虑的是,两个人较小位置的应该走向下一个数的较小位置,较大位置的应该走向下一个数的较大位置,这样的每一步两个人都是最短距离,最后的路线和也是最短的。代码:#include<bi...原创 2020-04-08 21:09:33 · 174 阅读 · 0 评论 -
codeforce TV Subscriptions
题意:找出连续的d个数,输出其中不同数字的最小个数。思路:因为每次我们都只要看d个数字就可,而每次我们都只是往后移一位,所以说每次我们删去第一个数字,加入一个数字,在判断不同的个数即可,无需每次都d次循环。代码:#include<bits/stdc++.h>using namespace std;int n,t,m,k,d;int a[200001],b[1000001...原创 2020-04-08 09:56:55 · 198 阅读 · 0 评论 -
codeforce..Sasha and a Bit of Relax
类似于前缀和的思想。。代码:#include<cstdio>#include<iostream>#include<algorithm>#include<queue>#include<map>#include<vector>#include<set>#include<string>#...原创 2020-03-25 12:33:15 · 119 阅读 · 0 评论 -
codeforce..Remove One Element
题意:可以删去一个数,找出最长的上升子序列思路:dp。用0行的dp数组记录当前位置为末尾的最大上升子序列的长度,用1行的dp数组记录当前位置为开始的最大上升子序列的长度。然后我们从前遍历一次,取当前位置为首的最大长度,加上去掉当前点前后两段加和的最大长度,取最大值,遍历之后即为答案。代码:#include<cstdio>#include<iostream>#i...原创 2020-03-25 11:10:16 · 178 阅读 · 0 评论 -
Vasya and Multisets
题意:在一个集合中只出现一次的数是nice的。给出一个集合,我们能否将其分为两个集合,每个集合的nice数的数量一样多。思路:因为每个数都是小于等于100的,所以我们开个数组b将每个数出现的次数记录下来。还要记录出现次数为1和大于等于三的数量。因为等于1的,肯定是nice,那我们一定得将它们分开在两个集合中。如果等于1的数量是偶数,我们只要将前一半的1的数分到一组,其余的数分到另一组就可以了...原创 2020-03-25 09:34:14 · 132 阅读 · 0 评论 -
codeforce.. WOW Factor
题意:给出一串字符,vv算作一个w,问字符串中包含wow的个数。思路:最开始只想求出所有w的字段长度,在求出所有o的字段长度,再分别加和乘就可以了。不过工作量大不说,还很容易漏判和错判很多情况。后来想到了线性时间解决的办法。用s记wow的总数,l记vv的总数,t来记录所有出现过的vvo的数量。每次遇到o,wo的数量就是之前的wo数量加上之前vv的数量。代码:#include<cst...原创 2020-03-25 09:09:02 · 227 阅读 · 0 评论 -
codeforce. Vitamins
题意:想要得到ABC,所需要的最小花费是多少。思路:由于给出的是ABC,又有不用类型的搭配,与二进制很相似,所以我们用二进制来表示。每次计算得到当前二进制数的最优解。代码:#include<cstdio>#include<iostream>#include<algorithm>#include<queue>#include<m...原创 2020-03-24 20:43:17 · 139 阅读 · 0 评论 -
codeforce. Just Eat It!
题意:如果有[l,r]这一段的和比数组总和大,就是NO,否则就是YES思路:就一段一段判断就可以。如果加和之后比a[i]还小,那就从a[i]从新开始计数。从一开始之后还要从2开始一遍,因为从一开始的,无法忽略不存在1的这种情况。代码:#include<bits/stdc++.h>using namespace std;long long n,k,t,mod=1e9+7,s...原创 2020-03-24 09:54:18 · 109 阅读 · 0 评论 -
codeforce. Covered Path
题意:给出初始速度,末尾速度,总时间,每秒速度变换最大值d,求最大的走过的路程。思路:因为最后要恢复到b这个速度,所以我们每秒钟最优的速度都可以得到。从前看,每秒的最大速度是v1+d,从后面看,每秒的速度是v2+d*(s-1)//不理解的话笔推一下即可代码:#include<iostream>#include<stdio.h>#include<bits/...原创 2020-03-24 09:43:13 · 129 阅读 · 0 评论 -
codeforce Maximum Sum of Digits
题意:给出n,让你在1到n中找到两个数,满足a+b等于n并且使S(a)+S(b)的值最大。S就是每位数位上的数值加和的结果。思路:这道题的解题点在于加和最大,而数位上的数值中9是最大的,所以我们要尽可能多的凑出9这个数字。我们可以这样想,首先讲最高的数值分离出来减一,作为a,因为他是n范围内9最多的数。然后剩下的数加一,作为第二个数b。这样的结果应该就是最优的。代码:#include&...原创 2020-03-22 16:37:29 · 191 阅读 · 0 评论 -
C. Frog Jumps
题意:一行字符串由L和R组成,数组从1标号到n。青蛙从0的位置开始起跳,想到达n+1的位置,当他跳到L的时候只能往左跳,跳到R的时候只能往右跳,跳的范围由你来定。问最小的d是多少思路:这道题超级无敌水。你只需要从头到尾判断一边字符串,如果是L的话是一定不行的。这里我们只看位置是R的时候,因为当位置上是L的时候,一定是往左跳到里当前位置最近的R才能更好的跳到n+1这个位置。每次我们都用pos更...原创 2020-03-13 09:04:06 · 546 阅读 · 0 评论 -
codeforce. E. Cyclic Components
题意:有n个点,m条边,问组成的没有杂边的回路的个数。思路:由题意,不含杂边的回路,那其中每个点的度数都是二,我们储存的时候就将和此点有联系的点放到vector中,然后每个点进行dfs,就可以找到答案。代码:#include<iostream>#include<vector>#include<bits/stdc++.h>using namespa...原创 2020-03-10 19:21:33 · 140 阅读 · 0 评论 -
codeforce A. Dead Pixel
#include<iostream>#include<bits/stdc++.h>using namespace std;typedef long long ll;int t ,a , b, x , y;int main(){ cin >> t; while(t--) { cin >> a >> b >>...原创 2020-03-08 19:07:42 · 207 阅读 · 0 评论 -
codeforce. B. Code For 1
题意:给出三个整数n , l , r , n是给出的数字,l和r是范围。集合里面初始只有n一个元素,你每次可以使集合里任意一个大于一的数进行除二的操作,除二的余数放在当前位置,两侧分别是刚才的数除二的商。反复进行此操作,知道集合中只剩下1和0.问在l到r的范围里,有多少个1.思路:从这道题的题意我们就可以看到,每个数进行操作之后,左右两侧的数是一模一样的,那左右的操作也是一样的。那我们就可以...原创 2020-03-08 18:54:10 · 165 阅读 · 0 评论 -
codeforce.C. Primitive Primes
题意:给出两个多项式,使两个多项式相乘,得到的多项式,存在系数不被p整除,则输出这个系数所在项的次幂。思路:其实读懂题意,很好做。因为想得到系数不能整除p,那么两个项都不能整除p,那我们只要找到a里面不能整除p的,再找到b里面不能整除p的,就可以输出两项的次幂和了#include <bits/stdc++.h>using namespace std; int m...原创 2020-03-05 18:46:19 · 198 阅读 · 0 评论 -
codeforce. B. String Modification
题意:有n个测试数据。每个测试数据第一个数t,表示字符串的长度。接下来输入字符串。你可以指定一个长度,然后从第一个字符开始反转该长度的字符串,直到最后一个字符反转完毕。问指定的长度为多少时,可以得到字典序最小的字符串。输出字典序最小的字符串以及指定的长度的大小。思路:因为数据给的很小,所以我们直接模拟的做就行了。代码:#include<bits/stdc++.h>...原创 2020-03-05 13:19:21 · 171 阅读 · 0 评论 -
codeforce B. Good String
题意:这道题其实不难,就是题意容易理解跑偏了。给你一串字符串,你可以选择一个字符“<",删除它左边的字符;你也可以选择字符“>"删去它右边的字符。现在想得到字符串都是由一样的字符组成,***但问的是***在进行上述操作之前他要删去至少多少个字符才能满足题意。思路:正确理解了题意,那就很简单了。在第一个>左边的字符你都无法改变,最后一个<右边的字符你也无法改变。所以只要...原创 2020-03-03 19:41:57 · 178 阅读 · 0 评论 -
codeforce A1. Add on a Tree
题意:一棵树,你可以选定任意两个叶子,给他们之间的路径赋值,问是否能选定任意两条边赋任意的值。思路:其实没有想象的那么复杂,从给的例子就可以看的出来,只要是有一个节点,他的入度是1,出度也是1,那这两条边一定是不可以的,其他情况就都可以满足题意。代码:#include<bits/stdc++.h>#include<iostream>#include<st...原创 2020-03-03 13:21:04 · 153 阅读 · 0 评论 -
codeforce C. Remove Adjacent
题意:给你一个字符串,每当一个字符的相邻字符在字母表中与它相邻,你就可以选择删掉它。问最大可以删去的字符是多少思路:最开始想的是从头开始判断,但是情况太多,总是会漏掉。注意到这道题数据很小,所以不如直接暴力求解。每次我们都循环一边,找到满足删去条件的最大的字符,我们把它删掉,然后继续循环,直到没有符合条件的。代码:#include<bits/stdc++.h>using n...原创 2020-03-02 20:25:08 · 540 阅读 · 0 评论 -
codeforce B. Journey Planning
题意:输入一个数n,接下来输入n个数,b[i]表示的是美丽值。她所经过的城市的路线必须满足b[j]-b[i]=j-i。问最大的美丽值是多少。思路:只要你稍微动一下你的笔,你就会发现,要想满足b[j]-b[i]=j-i,那移项之后就是b[j]-j=b[i]-i,所以说我们只要储存b[i]-i累加的值,直接线性寻找就可以了。代码:#include<bits/stdc++.h>u...原创 2020-03-02 19:35:08 · 226 阅读 · 0 评论 -
codeforce. C. Perfect Team
题意: 有a,b,c三种数,有多少种三个数的组合,使得每组数,至少一个a一个b。思路: 二分是很显然的,但是还可以推公式。比赛的时候写的是二分。赛后看大牛的代码,貌似就3种情况:x,y,(x+y+z)/3。取最小值就可以了。理由的话,就是按种类数足的话,就按人数取,种类数不足的话,就按照种类数取。但是这样感觉还是不自然(没有严谨的数学推理)。假设三类数数目分别为x,y,z。令a = min(...转载 2020-02-25 11:06:57 · 244 阅读 · 0 评论 -
cf. (E) Thematic Contests
题意:第一行给出t,接着有t个问题,ai表示第i个问题的种类。现在想要举办比赛,每天一场比赛,每场比赛所有问题都是一个种类,第二天的问题数是前一天问题数的两倍,问最多的问题数思路:首先我们用mp来记录每个种类数,用a数组来记录种类数的问题数量。接着对a排序,然后就开始搜索过程。首先就是想到暴力,但是暴力会超时,于是改用stl自带的二分查找,就A了代码:#include<iostre...原创 2020-02-23 13:53:17 · 180 阅读 · 0 评论 -
cf.C. Bad Sequence
题意:给你一串括号组成的字符串,让你判断是否是完美的字符串。你有一次机会,可以交换两个字符的位置,如果可以变成完美的字符串,就输出Yes,否则输出No思路:用栈模拟就行代码:#include<iostream>#include<cmath>#include<algorithm>#include<bits/stdc++.h>usin...原创 2020-02-20 16:06:40 · 344 阅读 · 0 评论 -
cf.B. High School: Become Human
题意:给你两个数x,y,让你比较x的y次幂和y的x次幂的大小。如果前者大则输出大于号,如果前者小就输出小于号,如果相等就输出等于号。思路!:很明显,数据范围是10的9次幂,运算是行不通的。如果说你想用高精度的话,说不定也会超时。那你仔细思考一下,就会发现他的本质是让我们比大小,那比大小的话我们只需要两边取对数,再比较大小就方便得多了。很多时候我们只要从出题人的角度,从题目的本质出发来思考问题...原创 2020-02-19 16:03:02 · 137 阅读 · 0 评论 -
cf.C. Cow and Message
题意:给你一个字符串,让你找出其中出现最多次数的子串出现的次数。题目中所说的字串是等差数列的子串,也就是说下标应该是等差数列。举个例子:aaabb,其中a出现了3次,b出现了2次,aa3次,bb1次,ab6次,aaa1次,aab4次等等,所以输出应该是6划重点:不过仔细想想,你就会发现,子串是一个字母或者字串是两个字母的时候,无论位置怎样,他都符合等差数列这个要求。你可能要问了,那两个...原创 2020-02-18 12:52:24 · 248 阅读 · 0 评论 -
cf.B. Numbers on the Chessboard
这是一道简单题,主要考查思维,你可以很容易的发现,他是两行一循环的,也就是每两行格式是一样的。而且只要你找到当前位置是第几个数,再跟据找到的规律,直接赋值就行了。#include<bits/stdc++.h>using namespace std;int main(){ long long int n , q; ios::sync_with_stdio(false); c...原创 2020-02-16 17:13:42 · 179 阅读 · 0 评论 -
cf.B. National Project
题意:有t组数据,每组数据有三个数n,a,b;n表示要修的路的长度,a表示修好的路的天数,b表示修不好的路的天数,要求将所有的路修完并且好的路占至少一半,问所需要的天数。思路:题意很好理解,实现起来也不是很难,但是不知道为什么就是一直wa,就很气。然饿一个小时改来改去,终于改对了。我分了三种情况,第一种情况是a*2>n,那么肯定修的超过一半都是好路并且一次就修完了。第二种情况是a&...原创 2020-02-15 11:44:48 · 292 阅读 · 0 评论 -
cf.B. Buttons
题意:题意就是我们小时候都玩过的,有一种锁,每次呢我们只能按一个按钮,如果按钮是正确的,那么这个按钮就不会弹起来,如果是错的,那么之前没有弹起来的按钮都会弹起来。输入的数字是按钮的个数,你需要输出的,是在最坏的可能下你会试多少次能够将锁打开。举个例子,输入为2 , 输出是3因为:最坏的情况是1错,2对,1对输入为3 , 输出为7因为:最坏的情况是1错,2错,3对,2错,3对,1对,2对...原创 2020-02-12 19:18:57 · 104 阅读 · 0 评论 -
cf. Is your horseshoe on the other hoof?
题意:很好理解,给出四个数,我想要凑齐4个不同的数,如果四个数不同就输出0,此时不用再找别的数来满足要求。如果是四个一样的数,那么我就要找到3个不同的数来满足我的要求,此时输出3。思路:我们只需要判断这四个数中各不相同的数有res个,输出的答案就是4-res。我用的是set这个c++中stl独有的库,集合里面的数是各不相同的,可通过此方法将相同的数直接排除,在判断集合的大小就是我们想知道的...原创 2020-02-09 19:22:20 · 248 阅读 · 0 评论 -
cf.Tom Riddle's Diary
水题一个,就不解释题意勒,一看就看得懂。主要的想法在于想到string类型的数组,看代码即可:#include<bits/stdc++.h>using namespace std;const int N = 1e6+10;string s[N];int main(){ int t; cin >> t; for(int i = 0 ;i < t ; i...原创 2020-02-08 20:37:05 · 210 阅读 · 0 评论