其他分享
首页 > 其他分享> > Codeforces Round #572 (Div. 2)

Codeforces Round #572 (Div. 2)

作者:互联网

目录

Contest Info


Practice Link

Solved A B C D1 D2 E F
6/7 Ø Ø Ø Ø Ø Ø -

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)\),定义
\[ \begin{eqnarray*} 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 10}{10} \right \rfloor \left \lfloor \frac{\sum\limits_{j = i + 2^i}^{} a_j \bmod 10}{10} \right \rfloor \end{eqnarray*} \]

D1. Add on a Tree

D2. Add on a Tree: Revolution

E. Count Pairs

标签:10,int,572,元素,Tree,Codeforces,满足,Add,Div
来源: https://www.cnblogs.com/Dup4/p/11144057.html