Educational Codeforces Round 123 (Rated for Div. 2)

A

#include <bits/stdc++.h>
using namespace std;
char s[10];
void solve()
{
    scanf("%s", s + 1);
    map<char, int> Map;
    bool flag = 1;
    for (int i = 1; i <= 6; i ++ ) {
        if (s[i] <= 'z' && s[i] >= 'a') Map[s[i]] = 1;
        else if (!Map[s[i] + 32]) flag = 0;
    }
    if (flag)   printf("YES\n");
    else printf("NO\n");
}
int main() {
    int T;
    scanf("%d", &T);
    while (T -- )   solve();
    return 0;
}

B

#include <bits/stdc++.h>
using namespace std;
int n;
int a[100];
void solve()
{
    scanf("%d", &n);
    for (int i = 1; i <= n; i ++ )  a[i] = n - i + 1;
    for (int j = 1; j <= n; j ++ )
        printf("%d ", a[j]);
    printf("\n");
    for (int i = 1; i < n; i ++ ) {
        swap(a[i], a[i + 1]);
        for (int j = 1; j <= n; j ++ )
            printf("%d ", a[j]);
        printf("\n");
        swap(a[i], a[i + 1]);
    }
}
int main() {
    int T;
    scanf("%d", &T);
    while (T -- )   solve();
    return 0;
}

C

#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int N = 5010;
int n, x;
int f[N], a[N];
void solve()
{
    memset(f, 0xcf, sizeof f);
    scanf("%d%d", &n, &x);
    for (int i = 1; i <= n; i ++ )  scanf("%d", &a[i]);
    for (int i = 1; i <= n; i ++ ) {
        int sum = 0;
        for (int j = i; j <= n; j ++ ) {
            sum += a[j];
            f[j - i + 1] = max(f[j - i + 1], sum);
        }
    }
    for (int i = 0; i <= n; i ++ ) {
        int ans = 0;
        for (int j = 0; j <= n; j ++ )
            ans = max(f[j] + min(j, i) * x, ans);
        printf("%d ", ans);
    }
    printf("\n");
}
int main() {
    int T;
    scanf("%d", &T);
    while (T -- )   solve();
    return 0;
}

D

#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int N = 2e5 + 10, MOD = 998244353;
int n, m, k, Q;
int a[N], b[N];
void solve()
{
    scanf("%d%d%d%d", &n, &m, &k, &Q);
    for (int i = 1; i <= Q; i ++ )  scanf("%d%d", &a[i], &b[i]);
    reverse(a + 1, a + 1 + Q);
    reverse(b + 1, b + 1 + Q);
    set<int> x, y;
    LL ans = 1;
    for (int i = 1; i <= Q; i ++ ) {
        if ((x.count(a[i]) && y.count(b[i])) || x.size() == n || y.size() == m) continue;
        x.insert(a[i]);
        y.insert(b[i]);
        ans = ans * k % MOD;
    }
    printf("%lld\n", ans);
}
int main() {
    int T;
    scanf("%d", &T);
    while (T -- )   solve();
    return 0;
}
posted @ 2022-02-24 13:01  Angels_of_Death  阅读(25)  评论(0)    收藏  举报