Codeforces
文章平均质量分 60
Amber0130
这个作者很懒,什么都没留下…
展开
-
Guess the Array
Guess the Array分析:交互题; 首先由a[1]+a[2]a[1]+a[2]a[1]+a[2],a[1]+a[3]a[1]+a[3]a[1]+a[3],a[2]+a[3]a[2]+a[3]a[2]+a[3]即可解出a[1],a[2],a[3]a[1],a[2],a[3]a[1],a[2],a[3]: 后面a[i]=(a[i]+a[i−1])−a[i−1](i>=4)a[i]=(a[i]+a[i-1])-a[i-1](i>=4)a[i]=(a[i]+a[i−1])−a原创 2021-02-01 16:59:25 · 99 阅读 · 0 评论 -
ABBB
ABBB#include<bits/stdc++.h>using namespace std;string s;void solve() { cin >> s; int len = 0; for (int i = 0; i < s.size(); i++) { if (s[i] == 'A' || len == 0) { ++len; } else { --le原创 2021-02-01 16:54:19 · 231 阅读 · 0 评论 -
Belted Rooms
Belted Rooms题意:给出nnn个点,从000到n−1n-1n−1都有边相连,n−1n-1n−1与000也有边相连。每条边都有方向,>>>表示顺时针可达,<<<表示逆时针可达,−-−表示双向可达。问共有几个点可以离开之后又回到该点。思路:可能有的人会以为是图,其实就是个思维题。因为双向可达是万能的,所以我们应重点关注两种单向可达。如果只有一种方向的单向可达,那说明这是一个环,任意一个点都可以走一圈回到原点。如果两种方向都有的话,那说明只有双向可达原创 2021-02-01 16:52:18 · 172 阅读 · 0 评论 -
Box is Pull
Box is Pull题意类似于推箱子的拉箱子,每次只能拉动一个格子,只能拉直线,拉一格需要一秒。那对于给出的任意两个点,只要他们在一条直线上,时间就是这两点的距离。如果不在一条直线上,那最短的路线就是两条直线,先将箱子从起点拉到与重终点在一条直线上,然后拉箱子的人改变方向(改变方向需要走两个格子),然后拉到终点。答案也就是两点间的距离加二。#include <bits/stdc++.h>using namespace std;void solve() { int a,原创 2021-02-01 16:47:46 · 146 阅读 · 0 评论 -
Putting Bricks in the Wall
Putting Bricks in the Wall#include<bits/stdc++.h>using namespace std;const int maxn =1e5+10;char s[maxn];int main() { scanf("%s", s); printf("3\nL 2\nR 2\nR %d\n", 2 * strlen(s) - 1); return 0;}原创 2021-01-30 15:45:59 · 107 阅读 · 0 评论 -
Replace by MEX
Replace by MEX题意:你被给予了一个数组,包含nnn个[0,n][0, n][0,n]的整数。每一次操作,你可以选择数组中的一个元素替换成这个数组的MEXMEXMEX。例如,如果数组是[0,2,2,1,4][0, 2, 2, 1, 4][0,2,2,1,4],你可以选择第二个元素替换成整个数组元素的MEXMEXMEX,数组会变成[0,3,2,1,4][0, 3, 2, 1, 4][0,3,2,1,4]。MEXMEXMEX的定义为不包含这个于这个数组的最小的非负整数。分析:每次计原创 2021-01-28 19:40:17 · 179 阅读 · 0 评论 -
Element Extermination
题意:1−n1-n1−n的全排列。操作:对iii,如果存在ai<ai+1a_i<a_{i+1}ai<ai+1,可移除它俩的任意一个。问是否能让数组只剩一个数。2.思路移除的过程,是不会改变整体的顺序,所以从首尾入手。规定a1<ana_1<a_na1<an对于它们之间的数:大于ana_nan的,一定也大于a1a_1a1,所以可以通过a1a_1a1来统统消掉。小于ana_nan的,均可以通过ana_nan来消掉。最终只会剩a1,ana_1,a_..原创 2021-01-28 19:32:43 · 160 阅读 · 0 评论 -
Neighbor Grid
题意给你一个二维数组,现在要求二维数组中的每一个位置的元素值的多少都要对应于周围有多少个相邻的不为000的数的个数。现在你每次可以对二维数组的元素加一,问是否能构造出这样的二维数组。思路贪心,既然能使任意位置加大任意数值,那么我们可以将所有位置都给他填满,这样的话,只要是满足条件的情况就都能这样输出,所以我们遍历每个位置,然后判断周围能填多少个,如果某个数大于周围能填的个数,那么就不满足条件.代码#include <bits/stdc++.h>using namespace ..原创 2021-01-28 19:27:31 · 209 阅读 · 0 评论 -
Sign Flipping
Sign Flipping题意:给你一个nnn大小的数组(nnn一定为奇数),现在你可以改变其中元素的符号,现在要求你在操作后,使得有至少一半的ai≤ai+1a_i \leq a_{i+1}ai≤ai+1,至少有一半ai≥ai+1a_i \geq a_{i+1}ai≥ai+1,现在让你构造出这个数组思路:我们直接正负正负的一直下去,由于nnn为奇数,那么肯定就满足条件了代码#include <bits/stdc++.h>using namespace st原创 2021-01-28 19:22:04 · 229 阅读 · 0 评论 -
Subset Mex
Subset Mex题意给你一个长度为nnn的数组aaa,你需要将其分成两个数组,使得其中未出现的最小非负整数的和最大思路首先第一个数必然是在数组¥a中就未出现的最下非负整数,这将使得在该数之前的所有数减¥1中就未出现的最下非负整数,这将使得在该数之前的所有数减¥1中就未出现的最下非负整数,这将使得在该数之前的所有数减¥1,然后再从000到maxmaxmax走一遍找到缺少的值即可代码#include <bits/stdc++.h>using namespace std;c原创 2021-01-26 10:10:43 · 178 阅读 · 1 评论 -
Cyclic Permutations
Cyclic Permutations题意思路对于每个iii,如果存在这样的qqq和wwwqqq 是iii 左 边 第 一 个 比 aia_iai 大 的 下 标www 是 iii 右 边 第 一 个 比 aia_iai 大 的 下 标那 么 容 易 证 明 qqq 和 www 有 边 , 也 就 是 构 成 了 环证明因 为 (q,i]( q , i ](q,i] 中 没 有 比 aia_iai 大 的 , [i,w)[ i , w )[i,w) 中 没 有 比 aia_i原创 2021-01-26 10:06:05 · 134 阅读 · 0 评论 -
Fix You
Fix You题意有一个传送带矩阵(n∗m)(n * m)(n∗m),每个格子有两个方向运输物品(向右或者向下),希望物品全部都到(n,m)(n,m)(n,m)的位置,就是说不要让东西掉下去。我们可以任意修改某个格子的运输方向,问最少需要修改几个。思路构造,只要最后一列没有向右的传送以及最后一行没有向下的传送即为合法状态。代码#include <bits/stdc++.h>using namespace std;const int maxn=1e3+10;char s[原创 2021-01-26 09:52:34 · 124 阅读 · 0 评论 -
Suborrays
Suborrays题意给定一个序列,包含nnn个元素,每个元素都是[1,n][ 1 , n ][1,n]中唯一的元素。求是否存在一个序列满足,对于任意的(1<=i<=j<=n)(1<=i<=j<=n)( 1 < = i < = j < = n ) (1 <= i <= j <= n)(1<=i<=j<=n)(1<=i<=j<=n),[i,j][ i , j ][i,j]中的每个数或起来大于j原创 2021-01-26 09:47:03 · 160 阅读 · 0 评论 -
Suffix Operations
Suffix Operations思路:首先观察通过后缀来改变数组,会有什么性质。首先,若先不考虑把一个数换掉,要想把所有数变得相等,因为最优肯定是变成最大最小值之间的一个数(不然还要多花步数),所以要花的次数肯定是数组的差分和。现在我们改变一个数的效果是什么?我们看一下三个例子7 5 3 (从后往前递增)把5改成【3,7】之间的都是最优的3 5 7 (从后往前递减)同上7 3 5 (中间“断崖”)显然5会经历先变成3再一起变成7的过程,这里就浪费了掉到3的步数,这个时候把3换成【5,原创 2021-01-24 17:20:27 · 173 阅读 · 0 评论 -
Random Events
Random Events思路对于后缀序ai,ai+1,…,ana_i,a_{i+1},…,a_nai,ai+1,…,an如果该序列已经全部满足ai=ia_i=iai=i,那么对于任意的r∈[i,n]r∈[i,n]r∈[i,n],他们是否排序都不会影响最终答案。但是如果不是这种序列就必须保证最后一个ai!=ia_i!=iai!=i必须有r=ir=ir=i,并且进行概率为ppp的操作。而后面的操作是否进行实际上都不影响答案,如果不进行刚才的操作,就必须保证r>ir>ir>i的原创 2021-01-24 16:13:30 · 177 阅读 · 0 评论 -
Mortal Kombat Tower
Mortal Kombat Tower思路一道经典的 dpdpdp 问题。我们要找准状态,由于每一关都是层层递进的,且每一关的通关者可以是你或者你朋友。(第一关除外。)那么我们则可以用01变量来表示你朋友和你。则我们就可以找到状态了:用dp[i][0]dp[i][0]dp[i][0]表示通第iii 关需要使用的最少通关卡,且第iii关为你朋友通关。用dp[i][1]dp[ i ][1]dp[i][1]表示通关第iii关需要使用的最少通关卡,且第iii关为你通关。找准状态之后根据题意设立状态转移方程原创 2021-01-22 12:47:12 · 135 阅读 · 0 评论 -
Marketing Scheme
Marketing Scheme题意: 有顾客想要购买数量为xxx的猫粮,xxx属于区间[l,r][ l , r ][l,r],而你会制定一个折扣,相当于购买aaa个就会享受折扣,其余的x mod ax\ mod \ ax mod a aaa则按原价购买。现在顾客有这样一个倾向:如果xmod a≥a2x\mod \ a≥\frac{a}{2}xmod a≥2a,那么顾客会购买多购买使得满折扣,你当然希望顾客多购买,故请你能否找到一个折扣a原创 2021-01-22 12:43:21 · 248 阅读 · 0 评论 -
Reverse Binary Strings
Reverse Binary Strings思路这种题,重在结果,而不是交替的过程如果碰到000000,那么找到下一个111111,中间的0 10~10 1所有进行反转。所以一个000000,就需要消耗一个111111来恢复01/1001/1001/10所以记录一下00,1100,1100,11的数目c1,c2c1,c2c1,c2取两者之间的最大值即可。如果c1!=c2c1!=c2c1!=c2,结尾是可能存在001001001这种的,这个时候就不是成对消耗了。#incl原创 2021-01-22 12:33:41 · 232 阅读 · 0 评论 -
Binary String Reconstruction
Binary String Reconstruction题意:考虑如下的过程。你有一个长度为n的二进制串 www 还有一个整数xxx 。你构建了一个长度为 nnn 的二进制串 sss 。二进制串 sss 的第iii 个字符串的选择如下:1.如果wi−xw_{i−x}wi−x存在并且等于111,那么sis_isi则等于111。2.如果$w_{i+x}存在并且等于111,那么sis_isi则等于111。3.如果前两种情况都不存在,那么sis_isi 则等于000。给出字符串sss和整数xx原创 2021-01-22 12:24:31 · 364 阅读 · 0 评论 -
RPG Protagonist
RPG Protagonist思路首先肯定不能直接贪心做,如果对于某个人去最优的方案,第二个人就不一定最优了。注意到 cntcntcnt 值很小。所以可以考虑枚举第一个人拿了多少把剑,剩余的肯定尽可能拿战斧。第二个人就可以贪心拿重量小的武器知道拿光,然后拿另外一个。#include <bits/stdc++.h> using namespace std;int f,p,cnts,cntw,s,w;int main() { int _; scanf("%d", &原创 2021-01-22 12:19:46 · 155 阅读 · 0 评论 -
String Similarity
String Similarity思路因为需要保证每一个都需要有一个一样的,那么就是每一个都需要有一个相似的,如果我们设第iii个相似的话,那么也就是在s[i,i+n]s[i,i+n]s[i,i+n]中 s[i+i]=str[i]s[i+i]=str[i]s[i+i]=str[i]#include <bits/stdc++.h> using namespace std;int main() { int _; scanf("%d", &_); whil原创 2021-01-22 12:17:00 · 461 阅读 · 0 评论 -
Zigzags
ZigzagsWe can rethink this as counting the number of equal pairs (ai,aj)=(ak,al)(a_i, a_j) = (a_k, a_l)(ai,aj)=(ak,al) where i<j<k<li < j < k < li<j<k<l. To do this we loop over jjj from right to left and make sure we have原创 2021-01-21 19:22:19 · 161 阅读 · 0 评论 -
Negative Prefixes
Negative Prefixes思路贪心,将所有能动的位置从大到小排个序就行了.原创 2021-01-21 14:34:24 · 362 阅读 · 0 评论 -
Buying Torches
Buying Torches思路初始你有一个木棍,造出 kkk 把火炬需要 kkk 个木棍和 kkk 个煤块,而一个煤块需要 yyy 个木棍,所以需要木棍k+y∗k−1k+y∗k−1k+y∗k−1个,而每次操作你可以获得 x−1x−1x−1 个木棍,所以为了获得木根,需要操作⌈k+y∗k−1x−1⌉⌈\frac{k+y∗k−1}{x−1}⌉⌈x−1k+y∗k−1⌉,之后获得 kkk 个煤块需要操作 kkk 次,所以答案就是⌈k+y∗k−1x−1⌉+k⌈\frac{k+y∗k−1}{x−1}⌉+k⌈x原创 2021-01-21 14:19:15 · 98 阅读 · 0 评论 -
找到最小生成树里的关键边和伪关键边
给你一个 nnn 个点的带权无向连通图,节点编号为 000 到 n−1n-1n−1 ,同时还有一个数组 edgesedgesedges ,其中 edges[i]=[fromi,toi,weighti]edges[i] = [from_i, to_i, weight_i]edges[i]=[fromi,toi,weighti] 表示在 fromifrom_ifromi 和 toito_itoi 节点之间有一条带权无向边。最小生成树 (MST)(MST)(MST) 是给定图中边的一个子集,它连接了所有原创 2021-01-21 11:47:08 · 605 阅读 · 0 评论 -
Applejack and Storages
Applejack and Storages题意有 n 条边,给出对应的长度,有 m 次询问,每次会 ‘+’:添加一根木棒,或 ‘-’:减少一根木棒,问是否可以组成一个正方形和一个长方形,这两个四边形不可以重合,减少时,保证一定拥有这种长度的木棒#include <bits/stdc++.h>using namespace std;int n, x, cnt2, cnt4;unordered_map<int, int> ma;int main() { s原创 2021-01-19 11:17:00 · 249 阅读 · 1 评论 -
Rainbow Dash, Fluttershy and Chess Coloring
Rainbow Dash, Fluttershy and Chess Coloring#include <bits/stdc++.h>using namespace std;int n;int main() { int _; scanf("%d", &_); while (_--) { scanf("%d", &n); printf("%d\n", n / 2 + 1); } return 0;}原创 2021-01-19 11:05:10 · 150 阅读 · 0 评论 -
Captain Flint and a Long Voyage
Captain Flint and a Long Voyage题意对于一个nnn位数,进行两次操作,首先将数字的每一位转换为二进制,随后删去最后nnn个数,最终得到的即为数rrr题目输入数字的位数,要求你给出rrr最大的最小nnn位数思路显然,假若要使得rrr最大,转换出的二进制数越长越好在数字0−90-90−9中,转换为222进制数最长的只有8,98,98,99-----10018-----1000所以最终的结果必定是由999与888组成因为我们会删除转换为222进制数的最后nn原创 2021-01-19 10:53:50 · 114 阅读 · 0 评论 -
Captain Flint and Crew Recruitment
Captain Flint and Crew Recruitment思路题目大意: 如果一个整数 xxx可以被表示成两个质数 ppp 和 q(p≠q)q(p≠q)q(p=q)的积,那我们可以把他叫做为近质数.输入一个整数nnn,请将它表示成四个不同的正整数的和,要求其中三个是近质数我们先列出最小的近质数并寻早规律.可以看到,最小的三个近质数分别为 2∗3,2∗5,2∗7(6,10,14)2*3,2*5,2*7 (6,10,14)2∗3,2∗5,2∗7(6,10,14)那也就是说,小于(6+原创 2021-01-19 10:37:29 · 145 阅读 · 0 评论 -
Binary Search
想在pos位置上找到x,如果二分的位置小于pos的话,说明这个位置的数应该<x,sma++如果二分的位置大于pos的话,说明这个位置的数应该>x,big++对于所有的全排列从n−x(1 n中所有>x的数)选big的全排列从x−1(1 n中所有<x的数)选sma的全排列pos位置上填x剩下的所有数other全排列(n−big−sma−1)ans=An−xbig∗Ax−1sma∗Aotherother想在pos位置上找到x,\\如果二分的位置小于pos的话,说明.原创 2021-01-18 16:42:43 · 106 阅读 · 0 评论 -
String Deletion
双指针乱搞一下。如果最长相等的前缀长度大于1,那么操作直接删这个前缀的一个数就好了,然后系统删掉这个前缀。否则寻找后面一个大于1的相等子串,操作删掉这个子串的一个数,然后系统删掉长度为1的相等前缀。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 2e5 + 10;int n,a[maxn];char s[maxn];int main() { int .原创 2021-01-18 16:08:19 · 139 阅读 · 0 评论 -
Minimax Problem
You are given nnn arrays a1,a2,...,ana_1, a_2, ..., a_na1,a2,...,an; each array consists of exactly mmm integers. We denote the yyy-th element of the xxx-th array as ax,ya_{x,y}ax,y.You have to choose two arrays aia_iai and aja_jaj (1≤i,j≤n1≤i,j≤n1≤原创 2021-01-13 11:07:02 · 258 阅读 · 0 评论 -
Dr. Evil Underscores
Today, as a friendship gift, Bakry gave Badawy nnn integers a1,a2,…,ana_1,a_2,…,a_na1,a2,…,an and challenged him to choose an integer XXX such that the value max1≤i≤n(ai⊕X)\underset{1≤i≤n}{max}(a_i⊕X)1≤i≤nmax(ai⊕X) is minimum possible, where ⊕⊕⊕ denot原创 2021-01-13 10:33:57 · 108 阅读 · 1 评论 -
Two Arrays
You are given two integers nnn and mmm. Calculate the number of pairs of arrays (a,b)(a,b)(a,b) such that:the length of both arrays is equal to mmm;each element of each array is an integer between 111 and nnn (inclusive);ai≤bia_i≤b_iai≤bi for any ind原创 2021-01-12 19:57:57 · 164 阅读 · 0 评论 -
Mezo Playing Zoma
Today, Mezo is playing a game. Zoma, a character in that game, is initially at position x=0x=0x=0. Mezo starts sending nnn commands to Zoma. There are two possible commands:‘L’ (Left) sets the position x:=x−1;‘R’ (Right) sets the position x:=x+1.Unfor原创 2021-01-12 19:47:19 · 151 阅读 · 0 评论 -
Fadi and LCM
Today, Osama gave Fadi an integer XXX, and Fadi was wondering about the minimum possible value of max(a,b)max(a,b)max(a,b) such that LCM(a,b)LCM(a,b)LCM(a,b) equals XXX. Both a and b should be positive integers.LCM(a,b)LCM(a,b)LCM(a,b) is the smallest pos原创 2021-01-12 19:43:15 · 205 阅读 · 0 评论 -
Yet Another Meme Problem
You are given two integers AAA and BBB, calculate the number of pairs (a,b)(a,b)(a,b) such that 1≤a≤A,1≤b≤B1≤a≤A, 1≤b≤B1≤a≤A,1≤b≤B, and the equation a⋅b+a+b=conc(a,b)a⋅b+a+b=conc(a,b)a⋅b+a+b=conc(a,b) is true; conc(a,b)conc(a,b)conc(a,b) is the concatenati原创 2021-01-12 18:20:23 · 117 阅读 · 0 评论 -
Deadline
Adilbek was assigned to a special project. For Adilbek it means that he has nnn days to run a special program and provide its results. But there is a problem: the program needs to run for ddd days to calculate the results.Fortunately, Adilbek can optimize原创 2021-01-12 18:16:10 · 176 阅读 · 0 评论 -
a-Good String
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 2e5+10;int n;char s[maxn];// getans 代表将[l,r] 变为一个 c-好串 所需最小改动int getans(int l,int r,char c){ if(l==r) return s[l]!=c; // 如果该串已经符合要求,则不需要改动,返回 0 int tot1 = 0,t.原创 2021-01-11 19:11:45 · 237 阅读 · 0 评论 -
Big Vova
Alexander is a well-known programmer. Today he decided to finally go out and play football, but with the first hit he left a dent on the new Rolls-Royce of the wealthy businessman Big Vova. Vladimir has recently opened a store on the popular online marketp原创 2021-01-11 18:50:52 · 184 阅读 · 0 评论