Codeforces Round #572 (Div. 2)

Posted dup4

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #572 (Div. 2)相关的知识,希望对你有一定的参考价值。

Contest Info


Practice Link

Solved A B C D1 D2 E F
6/7 ? ? ? ? ? ? -
  • O 在比赛中通过
  • ? 赛后通过
  • ! 尝试了但是失败了
  • - 没有尝试

Solutions


A. Keanu Reeves

签到题。

#include <bits/stdc++.h>
using namespace std;
?
#define N 1100
char s[N]; int n;
?
int main() 
    while (scanf("%d%s", &n, s + 1) != EOF) 
        int cnt = 0;
        for (int i = 1; i <= n; ++i) 
            if (s[i] == '1') ++cnt;
            else --cnt;
          
        if (cnt) 
            puts("1"); puts(s + 1);
         else 
            puts("2");
            printf("%c %s\n", s[1], s + 2);
        
    
    return 0;

B. Number Circle

题意:
有一个序列\(a_1, a_2, \cdots, a_n\),要求重新排列构成一个环,任意一个数都要满足严格小于旁边两数之和。
输出方案;

思路:
本来的想法是最大的放中间,次大,第三大的放旁边这样一次放下去,但是发现这样并不总能构造出解。
后来想想,直接降序排,那么其中除了最大的一个元素可能不满足,其他元素肯定都满足。
那么我们先降序排,有\(a_n, a_n - 1, \cdots, a_1\)
然后将\(a_n - 1\)移到最后一个,依然满足其他元素都满足,最大的那个元素可能不满足。
但是这个情况下,如果最大的元素都不满足,那肯定满足不了了,因为和最大的元素相邻的是次大的和第三大的。

代码:

#include <bits/stdc++.h>
using namespace std;
?
#define N 100010
int n, a[N], b[N];
?
bool ok(int *a) 
    if (a[2] + a[n] <= a[1]) return 0;
    if (a[1] + a[n - 1] <= a[n]) return 0;
    for (int i = 2; i < n; ++i) 
        if (a[i - 1] + a[i + 1] <= a[i]) 
            return 0;
        
    
    return 1;

?
int main() 
    while (scanf("%d", &n) != EOF) 
        for (int i = 1; i <= n; ++i) scanf("%d", a + i);
        sort(a + 1, a + 1 + n, [](int x, int y) 
            return x > y;       
        );
        b[1] = a[1];
        for (int i = 3; i <= n; ++i) b[i - 1] = a[i];
        b[n] = a[2];
        if (ok(b)) 
            puts("YES");
            for (int i = 1; i <= n; ++i) printf("%d%c", b[i], " \n"[i == n]);
         else 
            puts("NO");
        
    
    return 0;

C. Candies!

题意:
\(n\)个数\(s_i(0 \leq s_i \leq 9)\),定义
\[ \begineqnarray* f([a_1, a_2, \cdots, a_2^k]) = \sum\limits_i = 1^k \left \lfloor \frac\sum\limits_j = 1^i + 2^i - 1 a_j \bmod 1010 \right \rfloor \left \lfloor \frac\sum\limits_j = i + 2^i^ a_j \bmod 1010 \right \rfloor \endeqnarray* \]

D1. Add on a Tree

D2. Add on a Tree: Revolution

E. Count Pairs

以上是关于Codeforces Round #572 (Div. 2)的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #572 (Div. 2) A.

Codeforces Round #572 (Div. 2)

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)

Codeforces Round #726 (Div. 2) B. Bad Boy(贪心)

CodeForces 572C. Lengthening Sticks(不定方程的根的方案个数)