![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
codeforces
sakurain_
这个作者很懒,什么都没留下…
展开
-
关于重复定义变量与memset函数导致超时的分析
简述先上俩组代码code1:void solve(){ int n; PII a[200010];//注意此处 cin>>n; rep(i,1,n){ cin>>a[i].fi; a[i].se=i; } sort(a+1,a+1+n); a[n+1].fi=INF; a[0].fi=INF; int k; rep(i,1,n){ if(a[i].fi原创 2020-11-25 18:12:30 · 796 阅读 · 0 评论 -
Codeforces Round #681 D. Extreme Subtraction(思维)
题意:T组输入,给n个数,有俩种操作从第一个到第k个让每一个a_i-1从最后一个到第k个让每一个a_i-1题解:从后往前处理,若后一个数大于前一个数,则让后面的所有数减少到等于前一个数字,若能实现操作,则输出YES(相当于构造了一个非递减序列,一定能用有限个操作1使数组变成全0),否则输出NOcode:#include<bits/stdc++.h>//#pragma GCC optimize(2)#define rep(i,a,n) for (int i=a;i<=n;.原创 2020-11-03 13:38:18 · 193 阅读 · 3 评论 -
Codeforces Round #681 C. The Delivery Dilemma(贪心、排序)
题意:TTT组样例,给nnn个菜,aia_iai数组表示外卖员送餐时间,bib_ibi表示自取时间,同时有多个外卖员,多个菜外卖花费时间为外卖中花费时间最多的时间,但是自己只有一个,所以选择自取花费时间为自取时间之和,每道菜可以选择自取或者外卖,求得到所有菜花费最少的时间题解:aaa数组从大到小排序,bbb数组从小到大排序,若aia_iai小于等于bib_ibi,选择外卖送,否则判断当前自取快还是外卖快,选择自取或外卖(见代码)code:#include<bits/stdc++.h.原创 2020-11-03 13:25:04 · 394 阅读 · 2 评论 -
Codeforces Round #681 B. Saving the City(贪心)
题意:T组样例,点燃一个地雷iii时相邻的地雷(i−1,i+1)(i-1,i+1)(i−1,i+1)都会爆炸,点燃一个地雷需要a个点数,放置一个地雷需要b个点数,现在需要炸掉给的s中所有的1,最小化花费的点数题解:贪心,注意边界条件code:#include<bits/stdc++.h>//#pragma GCC optimize(2)#define rep(i,a,n) for (int i=a;i<=n;i++)#define per(i,a,n) for (int .原创 2020-11-03 13:11:17 · 231 阅读 · 0 评论 -
Codeforces Round #677 (Div. 3) E. Two Round Dances
题意:N个人两等分,分别在两个序列中跳舞。N保证为偶数。跳舞过程中,因为是围在一起跳舞的,所以一个序列可以通过旋转或得到另一个序列,则认为这两个序列是相同的。问共有多少种跳舞的分配方法序列。题解:code:#include<bits/stdc++.h>using namespace std;#define ll long long int main(){ ll n; cin>>n; ll res=1; for(int i=1;i&.原创 2020-10-21 20:59:37 · 100 阅读 · 0 评论 -
Codeforces Round #677 (Div. 3) D. Districts Connection
题意:给出一些节点,每个节点有权值,权值相同的节点不能相连,问是否有办法使用n-1条边将所有节点连成连通图。如果可以,输出路径。不可以输出NO即可。题解:只要有不同的必定有答案只需要将所有与第一个不同的与第一个相连再将剩下的与其他任意一个相连即可比赛没做出来,人傻了code:#include<bits/stdc++.h>using namespace std;int a[5010],vis[5010];void solve(){ int n; cin>.原创 2020-10-21 20:53:33 · 252 阅读 · 1 评论 -
Codeforces Round #677 (Div. 3) C. Dominant Piranha
题意:按顺序给出一排鱼的大小,大鱼可以吃掉左或右的小鱼,吃掉后自身变大 1 .问鱼缸里是否有一条鱼经过不断的左右吞吃把其他所有鱼吃掉。(其他鱼不动)如果有 输出任意一个即可。题解:只要有不同的必定有答案比较俩数字寻找最大值即可code:#include<bits/stdc++.h>//#pragma GCC optimize(2)#define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值,n为界限值,递增#defi.原创 2020-10-21 20:49:24 · 112 阅读 · 1 评论 -
Codeforces Round #677 (Div. 3) B. Yet Another Bookshelf
题意:书架上有很多书,1代表此位置有书,0没有书。每次可以抱一摞书移动一个格子。(一摞书,多少都可以,连续的1视为一摞)问最少多少次移动可以把所有的书归为一摞。题解:可以移动连续的书所以答案就是1中间0的数量双指针遍历即可code:#include<bits/stdc++.h>//#pragma GCC optimize(2)#define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值,n为界限值,递增#defin.原创 2020-10-21 20:43:31 · 102 阅读 · 0 评论 -
Codeforces Round #677 (Div. 3) A. Boring Apartments
题意:一个人打电话,按照1 11 111 1111 2 22 222 2222 3 33 333。。。的顺序打电话一直打到9999.给一个停止的数字,问到这个数字为止,总共按了多少次按键。(包括给的数字)题解:水题,暴力即可code:#include<bits/stdc++.h>//#pragma GCC optimize(2)#define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值,n为界限值,递增#define .原创 2020-10-21 20:37:58 · 128 阅读 · 0 评论 -
Codeforces Global Round 11 B. Chess Cheater
题意:给n,k,字符串s,W代表赢,L代表输,可以将改变k个L为W,当W前有W时分数+2,没有分数+1,问得到的最大分数可以是多少题解:特判全为L的情况;找出连续的L的数量,排序,优先将小的L变为W,此时score+=2v[i]+1;剩下的只能score+=2k;最后判断一下最大值,只要score不超过最大值,直接输出,若超过,输出全为W的最值代码:#include<bits/stdc++.h>using namespace std;int main() { int t原创 2020-10-11 10:52:56 · 472 阅读 · 0 评论 -
Codeforces Round #674 (Div. 3) C. Increase and Copy
题意:有个数组a,开始只有一个元素a [ 0 ] = 1 ,每次操作你可以选择以下之一:1、选择数组中的一个元素+ 1 。2、复制数组中的一个元素到数组末尾。现在要让数组中的元素和为n,至少需要几次操作?题解:要使操作次数最小,则先让a[0]++,增加后复制即可,则此时需要的操作数为(a0−1)+na0(a_0-1)+\frac{n}{a_0}(a0−1)+a0n,枚举每一个a[0]即可,显然只需要枚举到n\sqrt nn即可code:#include<bits/stdc++.h.原创 2020-09-29 17:08:32 · 127 阅读 · 0 评论 -
Codeforces Round #674 (Div. 3) B. Symmetric Matrix
题意:T组输入,每组输入n,m,给你n种为2×2瓷砖(数量不限),让你构造m*m的矩阵,该矩阵为轴对称矩阵(沿主对角线对称,即左上到右下),问是否能够构造出这样一个矩阵题解:1.m为奇数肯定不能构造2.只要有一种瓷砖右上和左下相同,那么全部使用这一种瓷砖即可构造code:#include<bits/stdc++.h> #pragma GCC optimize(2)#define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值原创 2020-09-29 17:00:24 · 90 阅读 · 0 评论 -
Codeforces Round #674 (Div. 3) A. Floor Number
题意:T组输入,每组输入一个n,x,n为需要到的门牌号,x为第二层以上每层有多少户,无论什么情况,第一层只有2户,求n号在第几层题解:读懂即可accode:#include<bits/stdc++.h> #pragma GCC optimize(2)#define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值,n为界限值,递增#define per(i,a,n) for (int i=a;i>=n;i--)//i为循环变原创 2020-09-29 16:50:24 · 129 阅读 · 0 评论 -
Codeforces Round #673 (Div. 2) B. Two Arrays(思维,构造)
题意:给你一个长n的数组a,给一个T,定义f(x)为x数组中ai+aj==T(i<j)a_i+a_j==T(i<j)ai+aj==T(i<j)的数组对数,将a数组分成c,d俩个数组,在俩数组中存数字,使得f(c)+f(d)f(c)+f(d)f(c)+f(d)的值最小题解:遍历一遍数组,若T−aiT-a_iT−ai在第一个数组中已经有了,则判断第一个和第二个数组中谁的数量多,将其放入数量最少的数组中,若第一个数组中T−aiT-a_iT−ai不存在,直接将aia_iai放入第.原创 2020-09-28 21:10:50 · 98 阅读 · 0 评论 -
Codeforces Round #673 (Div. 2) A.Copy-paste
题意:问在保持每个数都小于等于k的情况下,最多能执行多少步a[j] += a[i] ,其中(i,j)为任意不同下标。题解:排序,将a[1]加到别的值上能加多少次code:#include<bits/stdc++.h> #pragma GCC optimize(2)#define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值,n为界限值,递增#define per(i,a,n) for (int i=a;i>=n;i-原创 2020-09-28 21:03:10 · 64 阅读 · 0 评论 -
Codeforces Round #671 D1. Sage‘s Birthday (easy version)(思维)
题意:有n个冰球排成一排,它们都有着各自的价格,现在你认为若一个冰球左右两边的冰球价格均大于此该冰球价格,那么这个冰球就是便宜的。(最左边和最右边的冰球都是不便宜的。),现在你只想购买便宜的,问你怎样排序才能购买到最多的冰球。(D1中冰球价格都不相同,D2中冰球价格可以相同。)题解:显然数量等于(n−1)/2(n-1)/2(n−1)/2问题在于如何输出序列,只需要从小到大,从左到右先填满偶数位置的数字,再填满奇数位置的数字即可#include<bits/stdc++.h> #prag.原创 2020-09-27 15:54:34 · 135 阅读 · 0 评论 -
Codeforces Round #671 C. Killjoy(思维)
题意:killjoy现在是个感染者,有n nn个用户他们都有着各自的评分,现在感染规则为:若有用户的评分与感染者的评分相同,则也被感染,并无法恢复。感染时间可发生在比赛中或比赛后。killjoy可以进行codeforces比赛(killjoy不能参加),可以对用户进行任意的分数操控,但所有总和必须为0。问Killjoy最少需要进行多少场比赛才能感染所有人。题解:1.若一开始所有人的rating就与killjoy相同,则不需要进行比赛,ans=12.若有任意一个或多个人rating与其相同,则一场比赛.原创 2020-09-27 15:49:10 · 96 阅读 · 0 评论 -
Codeforces Round #672 (Div. 2) C1. Pokémon Army (easy version)(dp)
题意:t组输入,给n个数字,构造一个序列ai−ai+1+ai+2−...ai+na_i-a_{i+1}+a_{i+2}-...a_{i+n}ai−ai+1+ai+2−...ai+n,问怎么样才能使序列值最大题解:一道dp题目,设dp1[]dp1[]dp1[]代表序列为奇数时,dp2[]dp2[]dp2[]代表序列为偶数时,那么有dp1[i]=max(dp1[i−1],dp2[i−1]+a[i])dp1[i]=max(dp1[i-1],dp2[i-1]+a[i])dp1[i]=max(dp1[.原创 2020-09-27 13:17:31 · 94 阅读 · 0 评论 -
Codeforces Round #672 (Div. 2) A. Cubes Sorting (思维)
题意:有一个长度为n的数组,每次能够交换相邻俩数的位置,问能否在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> #pragma GCC optimize(2)#define rep(i,a,n) for (int i=a;i<=n;i++)/.原创 2020-09-27 13:06:15 · 95 阅读 · 0 评论 -
Codeforces Round #672 (Div. 2) B. Rock and Lever(位运算、思维)
题意:给n个数,(ai...an)(a_i...a_n)(ai...an)寻找一对(ai,aj)(a_i,a_j)(ai,aj)使得 ai与aj>=ai⊕aja_i 与 a_j>=a_i\oplus a_jai与aj>=ai⊕aj题解:进行一些运算可知,当aia_{i}ai的最高位的1与aja_jaj的最高位的1位置相同时满足条件#include<bits/stdc++.h> #pragma GCC optimize(2)#define rep(.原创 2020-09-27 13:01:10 · 126 阅读 · 0 评论 -
codeforces round #613
codeforces round #613A. Mezo Playing题目大意机器人初始位置为0,给了一串指令告诉机器人是往左走一格还是右走一格,部分指令可能会丢失,问机器人最终可能的位置的情况数。解题思路见代码:#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>&...原创 2020-01-12 16:34:47 · 94 阅读 · 0 评论 -
Codeforces Hello 2020 (A/B)
A-New Year and Naming题目链接题意:给俩行数量为n,m的单词,类似与天干地支的规则,依次取第一行单词与第二行单词进行匹配,接下来给出q次询问,询问匹配的第k个匹配。此处默认读者知道天干地支的知识了当时读完题很快就想到了怎么做了,假装算秒a吧题解:只需要第一行对n进行取模,第二行对m进行取模(即各行对应自己的数量取模即可)注意此处取模会得到0的结果,对应的单...原创 2020-01-05 16:58:47 · 196 阅读 · 0 评论