codeforcesround#386(div2)

人活着就是为了Chelly 人活着就是为了Chelly     2022-08-20     227

关键词:

A

=w=

B

QAQ

C

^o^

D

题意:小明要和a+b杯茶共n杯,有绿茶a杯,黑茶b杯。小明喝同一种茶最多连续喝k杯。问是否存在一种方案使得小明喝完这n杯茶,是则输出任意一种顺序。

分析:贪心

  我们的目标是尽可能制造绿茶和黑茶相等的局面,所以先尽可能将多的那个喝成与少的那个相等,若相等则直接可以了,若不相等则喝一杯少的,再继续尽可能喝那多的,如果中间无法操作则-1

E

题意:现在给了n个数字,然后还有一个1到m,代表可以把a里面任意一个数换成1-m,最后需要保证a数组里面的所有的数的奇数个数等于偶数个数,问最少的换的次数,以及换了之后的数组是什么样子的,当然还有不能达到的情况,输出“-1”。

分析:思维题

  把奇数和偶数分开处理

  开两个set,将奇数数组里的不相同的数放进一个set,将偶数数组里的不相同的数放进另一个set

  奇数指针p=1,偶数指针q=2

  依次遍历奇数数组和偶数数组中重复出现的数(它们需要被改掉) 每次放数,p+=2,q+=2,当然如果p,q在各自的set中出现过,则还要再增加,一直到没有出现过为止

  当然这样只是能保证奇数数组中的数都不同,偶数数组中的数都不同,而奇数和偶数的总数还不一定相等

  为了解决这种情况,不放假设奇数数量>偶数数量

  那么需要先开始用p的自增来替代偶数数组中重复出现的数,直到奇偶数量平衡

  在上述所有的p,q自增操作中,一旦超过了m,则说明不可行,输出-1

  在操作过程中,记录下每个位置最终的答案得到ans[],与原始的x[]比较得出最少更改多少个

F

题意:一个人又k的时间听n首音乐,每一首音乐都有一个愉快度,然后这个人可以选择听这首音乐完整时间t,1/2向上取整的时间,还要满足听了一半的个数<=m

分析:模拟+set

  考虑一段x首歌,最优的方法肯定是让其中时间最长的m首歌曲时间减半

  考虑一个可行解i~j,那么对于下一个可行解i+1~x,那么x>=j,即两个指针是非单减的,所以只要弄个数据结构维护这一类似单调队列的东西

  具体的做法是弄两个set表示一段区间中未减半时间的和减半时间的

  每次判断j指针能否后移,先看减半时间的set是否满了,若未满直接判断加入减半时间是否合法;若满了则判断减半时间的set中的最小值和t[j]大小,如果t[j]大就将最小的那个放进未减半时间set中,t[j]放入减半时间那个,判断是否合法

  对于每个i指针,求出最远的j指针,并不断更新答案

  然后需要对i指针进行删除

  若i在未减半set中,直接删除,若在减半set中,把i删除后还需要把另一个set中最大的那个加入减半set中

  注意set.end()是开区间,所以取一个set最大的时候需要先得到它的迭代器,然后自减

G

题意:给出一颗树每个深度节点的个数,并给出叶子节点的个数,问能否形成一个树,若能输出任意一种

分析:构造

  考虑最少要多少叶子节点

  最底层的,以及第i层节点数量比第i+1层节点数量多的这种都肯定是叶子节点,统计最少叶子节点的总数,和给出的比较,如果不够,则输出-1,否则将那种节点全部标记为叶子节点

  对于那些多的叶子节点,可以自底向上尽可能标记

  最后根据标记输出可行方案即可

  先看哪些是必须为叶子节点的

codeforcesround#736(div.1&&div2)

CodeforcesRound#736(Div2)CodeforcesRound#736(Div.1)题号题目难度AGregorandCryptography签到BGregorandthePawnGame模拟CWebofLies思维DIntegersHaveFriends思维+st表ETheThreeLittlePigsF1GregorandtheOddCows(Easy)F2Gregor 查看详情

codeforcesround#429(div2)

2017-08-20 10:00:37writer:pprp用头文件#include<bits/stdc++.h>很方便A.GenerousKefacodeforces841A题目如下:OnedayKefafound n baloons.Forconvenience,wedenotecolorof i-thbaloonas si&nbs 查看详情

codeforcesround#564(div2)(代码片段)

CodeforcesRound#564(div2)本来以为是送分场,结果成了送命场.菜是原罪ASB题,上来读不懂题就交WA了一发,代码就不粘了B简单构造很明显,\(n*n\)的矩阵可以按照这个顺序排列然后根据\(n\)的大小搞一搞就好了#include<cstdio>#include<cctype&g... 查看详情

codeforcesround#393div2

A.Petrandacalendar(模拟)http://codeforces.com/problemset/problem/760/A 题意:已知2017年m月1日是星期d,求这个月日历有多少行。 算法:简单模拟或者直接用公式算。 代码:#include<bits/stdc++.h>usingnamespacestd;intmonth[12]={31,2 查看详情

codeforcesround#429div2

竟然还涨分了。。。rank500+还能涨我rating是有多低。。。AB不写了C:类似找规律,具体证明看edtorial#include<bits/stdc++.h>usingnamespacestd;constintN=200010;intm;structdata{intb,id;boolfriendoperator<(dataA,dataB){returnA.b<B.b 查看详情

codeforcesround#416div2

A:暴力模拟#include<bits/stdc++.h>usingnamespacestd;inta,b;intmain(){scanf("%d%d",&a,&b);intdelta=1,x=0;while(1){if(x==0){if(a<delta){puts("Vladik");return0;}a-=delta;++delta;x^=1;}else{if 查看详情

前行◇第3站◇codeforcesround#512div2

【第3站】CodeforcesRound#512Div2第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间Rating又掉了……但是没什么,比上一次好多了:)+传送门+ ◇简单总结 前两... 查看详情

codeforcesround#415div2

由于下午硬钢树套树和大力颓废就没补完C:我傻逼比赛时没做出来。。。就是排个序然后算贡献#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=300010,mod=1000000007;intn;llans,t=1;lla[N],bin[N];boolcp(inti,intj){returni<j; 查看详情

codeforcesround#426div2

A:如果n%2=0或2就是undefined,否则判一下转一下是否能到达状态#include<bits/stdc++.h>usingnamespacestd;intn;chars[10],t[10];intmain(){scanf("%s%s%d",s,t,&n);if(n%4==0||n%4==2){puts("undefined");return0;}if((s[0]==‘ 查看详情

codeforcesround#317(div2)

ProblemA Arrays思路:水一水。1#include<bits/stdc++.h>2usingnamespacestd;3constintN=1e5+5;4intn1,n2,k,m,a[N],b[N];5intmain()6{7scanf("%d%d",&n1,&n2);8scanf("%d%d",&k,&m);9for(inti=1 查看详情

codeforcesround#394div2

A.DashaandStairs(数学)http://codeforces.com/problemset/problem/761/A 题意:已知有a个偶数b个奇数,判断这些数能不能组成连续正整数数列。 算法:直接判断abs(a-b)≦1即可。注意a和b同时为0的情况。 代码:#include<bits/stdc++.h>... 查看详情

[codeforcesround#461(div2)]题解(代码片段)

[比赛链接]     http://codeforces.com/contest/922[题解]     ProblemA.CloningToys     [算法]       & 查看详情

codeforcesround#428div2

A:暴力模拟,能加就加,如果累计到了8就加上,每次累积#include<bits/stdc++.h>usingnamespacestd;intmain(){intn,k,cnt=0;scanf("%d%d",&n,&k);for(inti=1;i<=n;++i){intx;scanf("%d",&x);cnt+=x;if(cnt>=8){k-=8;c 查看详情

codeforcesround#433div2

A:枚举一下就行了...居然wa了一发,题目一定要看清#include<bits/stdc++.h>usingnamespacestd;intn;intmain(){cin>>n;intmid=n/2-((n&1)==0);for(inti=n/2;i;--i){if(__gcd(i,n-i)==1){printf("%d%d ",i,n-i);return0;} 查看详情

codeforcesround#264(div2)

    A题 我仅仅想说题意非常坑,一不小心就会wa,哎,不机智的我居然在最后判题的过程中错了,少加一个推断语句。错的值了,你说呢?#include<map>#include<cmath>#include<queue>#include<vector>#incl... 查看详情

codeforcesround450div2b.jzzhuandsequences(代码片段)

B.JzzhuandSequencestimelimitpertest1secondmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputJzzhuhasinventedakindofsequences,theymeetthefollowingproperty:![](https://codeforces.com/p 查看详情

codeforcesround#132(div2)a.bicyclechain(代码片段)

A.BicycleChaintimelimitpertest2secondstimelimitpertest1secondmemorylimitpertest256megabytesinput:standardinputoutput:standardoutputVasya‘sbicyclechaindriveconsistsoftwoparts:nstarsareattachedtothepeda 查看详情

codeforcesround#332div2题解(代码片段)

codeforcesRound#332Div2AB签到题比较激动,纷纷WA了一发。C把数组h复制给a,然后对a数组排序。对h和a数组,求前缀和,有多少个位置满足(suma[i]=sumh[i]),就最多能分成多少块。D我们枚举更短的那条边,这样的边不会太多。然后求,更... 查看详情