Codeforces Round #630 (Div. 2)

A题

模拟过程考查对临界条件的判断

#include<bits/stdc++.h>
using namespace std;
 
int main() {
    int T; cin >> T;
    while (T--) {
        int A, B, C, D; cin >> A >> B >> C >> D;
        int X, Y, X1, Y1, X2, Y2; cin >> X >> Y >> X1 >> Y1 >> X2 >> Y2;
        cout << (X1 <= X-A+B && X-A+B <= X2 && Y1 <= Y-C+D && Y-C+D <= Y2 && (X2>X1 || (A+B==0)) && (Y2>Y1 || (C+D==0)) ? "Yes" : "No") << '
';
    }
 
    return 0;
}

 B题

相同公因数进行判定。用个标号记录对应颜色即可。由于数据规模较小。直接暴力即可。

#include <bits/stdc++.h>
using namespace std;
int p[11] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31};
int vis[12];
int main () {
    int t;
    scanf("%d", &t);
    while(t--) {
        int n;
        scanf("%d", &n);
        int a[1005];
        int color[1005];
        for(int i = 0; i < n; ++i) {
            scanf("%d", &a[i]);
        }
        memset(vis, 0, sizeof vis);
        int tep = 0;
        for(int i = 0; i < n; ++i) {
            for(int j = 0; j < 11; ++j) {
                if(a[i] % p[j] == 0) {
                    if(!vis[j]) {
                        vis[j] = ++tep;
                    }
                    color[i] = vis[j];
                    break;
                }
            }
        }
        printf("%d
", tep);
        for(int i = 0; i < n; ++i) {
            printf("%d ", color[i]);
        }
        printf("
");
    }
}

 C题

每k步进行遍历。记录长度为k的区间中两端的每个字母中出现次数。从开始遍历到中间,每次n减去字母出现最多次数(代表不用修改的)因为最多修改n次。

#include<bits/stdc++.h>
using namespace std;
 
int main() {
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int T; cin >> T;
    while (T--) {
        int N, K; cin >> N >> K;
        string S; cin >> S;
        int ans = N;
        for (int i = 0; i <= K-1-i; i++) {
            vector<int> cnt(26, 0);
            for (int j = i; j < N; j += K) {
                cnt[S[j] - 'a']++;
            }
            if (i < K-1-i) {
                for (int j = K-1-i; j < N; j += K) {
                    cnt[S[j] - 'a']++;
                }
            }
            ans -= *max_element(cnt.begin(), cnt.end());
        }
        cout << ans << '
';
    }
    return 0;
}

 D题

水题。不想多说了。。。

#include<bits/stdc++.h>
using namespace std;
//SB题
const int T = 1 << 17;
const int F = 2 * T - 1;
int dp[10][10];

int n, m;
int main () {
    scanf ("%d", &n);
    printf ("3 3
%d %d %d
%d %d %d
%d %d %d
", F, T, 0, n, T, 0, n, F, n);
    // int a[10][10] = { {F, T, 0}, {n, T, 0}, {n, F, n}};
    // memset(dp, 0, sizeof dp);
    // dp[0][1] = a[0][0];
    // for(int i = 1; i <= 3; ++i) {
    //     for(int j = 1; j <= 3; ++j) {
    //         dp[i][j] = max(dp[i-1][j] & a[i - 1][j - 1], dp[i][j-1] & a[i - 1][j - 1]);
    //     }
    // }
    // for(int i = 1; i <= 3; ++i) {
    //     for(int j = 1; j <= 3; ++j) {
    //         cout << dp[i][j] << " ";
    //     }
    //     cout << endl;
    // }
    return 0;
}
作者:LightAc
出处:https://www.cnblogs.com/lightac/
联系:
Email: dzz@stu.ouc.edu.cn
QQ: 1171613053
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/lightac/p/12610473.html