Codeforces Round #386(div 2)

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,否则将那种节点全部标记为叶子节点

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

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

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

时间: 2024-12-06 12:38:18

Codeforces Round #386(div 2)的相关文章

Codeforces Round #386 (Div. 2) E - Numbers Exchange

题意:给你n个数,和m,让我们从1-m选数字,使得n个数奇数和偶数个数相同切各不相同 思路:模拟 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 5 int n,m; 6 set<ll > s; 7 map<ll ,int > ma; 8 ll b[200005]; 9 ll a[200005]; 10 int main(){ 11 cin>>n>&g

Codeforces Round #279 (Div. 2) ABCD

Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name     A Team Olympiad standard input/output 1 s, 256 MB  x2377 B Queue standard input/output 2 s, 256 MB  x1250 C Hacking Cypher standard input/output 1 s, 256 MB  x740 D Chocolate standard input/

Codeforces Round #428 (Div. 2)

Codeforces Round #428 (Div. 2) A    看懂题目意思就知道做了 #include<bits/stdc++.h> using namespace std; #pragma comment(linker, "/STACK:102400000,102400000") #define rep(i,a,b) for (int i=a; i<=b; ++i) #define per(i,b,a) for (int i=b; i>=a; --i

Codeforces Round #424 (Div. 2) D. Office Keys(dp)

题目链接:Codeforces Round #424 (Div. 2) D. Office Keys 题意: 在一条轴上有n个人,和m个钥匙,门在s位置. 现在每个人走单位距离需要单位时间. 每个钥匙只能被一个人拿. 求全部的人拿到钥匙并且走到门的最短时间. 题解: 显然没有交叉的情况,因为如果交叉的话可能不是最优解. 然后考虑dp[i][j]表示第i个人拿了第j把钥匙,然后 dp[i][j]=max(val(i,j),min(dp[i-1][i-1~j]))   val(i,j)表示第i个人拿

Codeforces Round #424 (Div. 2) C. Jury Marks(乱搞)

题目链接:Codeforces Round #424 (Div. 2) C. Jury Marks 题意: 给你一个有n个数序列,现在让你确定一个x,使得x通过挨着加这个序列的每一个数能出现所有给出的k个数. 问合法的x有多少个.题目保证这k个数完全不同. 题解: 显然,要将这n个数求一下前缀和,并且排一下序,这样,能出现的数就可以表示为x+a,x+b,x+c了. 这里 x+a,x+b,x+c是递增的.这里我把这个序列叫做A序列 然后对于给出的k个数,我们也排一下序,这里我把它叫做B序列,如果我

[Codeforces] Round #352 (Div. 2)

人生不止眼前的狗血,还有远方的狗带 A题B题一如既往的丝帛题 A题题意:询问按照12345678910111213...的顺序排列下去第n(n<=10^3)个数是多少 题解:打表,输出 1 #include<bits/stdc++.h> 2 using namespace std; 3 int dig[10],A[1005]; 4 int main(){ 5 int aa=0; 6 for(int i=1;;i++){ 7 int x=i,dd=0; 8 while(x)dig[++dd

Codeforces Round #273 (Div. 2)

Codeforces Round #273 (Div. 2) 题目链接 A:签到,仅仅要推断总和是不是5的倍数就可以,注意推断0的情况 B:最大值的情况是每一个集合先放1个,剩下都丢到一个集合去,最小值是尽量平均去分 C:假如3种球从小到大是a, b, c,那么假设(a + b) 2 <= c这个比較明显答案就是a + b了.由于c肯定要剩余了,假设(a + b)2 > c的话,就肯定能构造出最优的(a + b + c) / 3,由于肯定能够先拿a和b去消除c,而且控制a和b成2倍关系或者消除

Codeforces Round #339 (Div. 2) B. Gena&#39;s Code

B. Gena's Code It's the year 4527 and the tanks game that we all know and love still exists. There also exists Great Gena's code, written in 2016. The problem this code solves is: given the number of tanks that go into the battle from each country, f

Codeforces Round #315 (Div. 1)

A. Primes or Palindromes? time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output Rikhail Mubinchik believes that the current definition of prime numbers is obsolete as they are too complex and un