CF求调C题()
  • 板块学术版
  • 楼主cxqghzj
  • 当前回复10
  • 已保存回复10
  • 发布时间2022/8/31 01:15
  • 上次更新2023/10/27 13:00:41
查看原帖
CF求调C题()
305769
cxqghzj楼主2022/8/31 01:15

太菜了C题都做不对QAQ

用的哈希,题目也没读懂。大佬轻喷QAQ

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int read() {
    int p = 0, flg = 1;
    char c = getchar();
    while (c < '0' || c > '9') {
        if (c == '-') flg = -1;
        c = getchar();
    }
    while (c >= '0' && c <= '9') {
        p = p * 10 + c - '0';
        c = getchar();
    }
    return p * flg;
}
void write(int x) {
    if (x < 0) {
        x = -x;
        putchar('-');
    }
    if (x > 9) {
        write(x / 10);
    }
    putchar(x % 10 + '0');
}
int gethash(string s) {
    int ans = (s[0] - 'a') + (s[1] - 'a') * 10 + (s[2] - 'a') * 100;
    return ans;
}
int h1[3005], h2[3005], h3[3005];
int main() {
    int T = read();
    while (T--) {
        memset(h1, 0, sizeof(h1));
        memset(h2, 0, sizeof(h2));
        memset(h3, 0, sizeof(h3));
        int n = read();
        int a = 0, b = 0, c = 0;
        string s;
        for (int i = 1; i <= n; i++) cin >> s, h1[gethash(s)] = 1;
        for (int i = 1; i <= n; i++) cin >> s, h2[gethash(s)] = 1;
        for (int i = 1; i <= n; i++) cin >> s, h3[gethash(s)] = 1;
        for (int i = 0; i <= 3000; i++) {
            //write(h1[i]), putchar(32), write(h2[i]), putchar(32), write(h3[i]), puts("");
            if (h1[i] && h2[i] && h3[i]) continue;
            if (h1[i] && h2[i]) a++, b++;
            if (h2[i] && h3[i]) b++, c++;
            if (h3[i] && h1[i]) c++, a++;
            if (h1[i] && !h2[i] && !h3[i]) a += 3;
            if (h2[i] && !h1[i] && !h3[i]) b += 3;
            if (h3[i] && !h1[i] && !h2[i]) c += 3;
        }
        write(a), putchar(32), write(b), putchar(32), write(c), puts("");
    }
    
    return 0;
}
2022/8/31 01:15
加载中...