日期:2025年7月20日
ZeroJudge 題目連結:b265. Q11286 - Conformity
解題想法
這個題目的中文敘述很奇怪。題目的意思應該是要統計各種課程組合的選課人數,例如
3
100 101 102 103 488
100 200 300 101 102
103 102 101 488 100
3
200 202 204 206 208
123 234 345 456 321
100 200 300 400 444
Python 程式碼
使用時間約為 0.5 s,記憶體約為 10.1 MB,通過測試。
import sys
from collections import defaultdict
result = []
for line in sys.stdin:
    if not line.strip(): continue
    n = int(line)
    if n == 0: break
    cnt = defaultdict(int)
    for _ in range(n):
        course = tuple(sorted(list(map(int, sys.stdin.readline().split()))))
        cnt[course] += 1
    ans = imax = 0
    for v in cnt.values():
        if v > imax:
            ans = v; imax = v
        elif v == imax:
            ans += v
    result.append(f"{ans:d}\n")
sys.stdout.write("".join(result))
C++ 程式碼
使用時間約為 89 ms,記憶體約為 984 kB,通過測試。
#include <cstdio>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    int n;
    while(scanf("%d", &n) != EOF && n != 0) {
        map<vector<int>, int> cnt;
        for(int i=0; i<n; i++) {
            vector<int> course (5);
            for(int j=0; j<5; j++) scanf("%d", &course[j]);
            sort(course.begin(), course.end());
            cnt[course]++;
        }
        int ans = 0, imax = 0;
        for(auto it : cnt) {
            int v = it.second;
            if (v > imax) {
                ans = v; imax = v;
            } else if (v == imax) {
                ans += v;
            }
        }
        printf("%d\n", ans);
    }
    return 0;
}
 
 
沒有留言:
張貼留言