1. 程式人生 > 實用技巧 >NOIP第三階段總結

NOIP第三階段總結

模擬賽41

階段排名 9

A 四個質數的和

  • 質數才有9592個,n2跑一遍求出組成兩個質數的方案數,其實跑不滿,就跑25371441次,很快的,計算的時候前兩個乘後兩個就好了
Show Code
#include <cstdio>

const int N = 1e5 + 5;
int p[N], m, f[N];
bool v[N];

int main() {
    freopen("plus.in", "r", stdin);
    freopen("plus.out", "w", stdout);
    for (int i = 2; i < N; ++i) {
        if (!v[i]) p[++m] = i;
        for (int j = 1; j <= m && i * p[j] < N; ++j) {
            v[i*p[j]] = 1;
            if (i % p[j] == 0) break;
        }
    }
    for (int i = 1; i <= m && p[i] * 2 < N; ++i) {
        f[p[i]*2]++;
        for (int j = i + 1; j <= m && p[i] + p[j] < N; ++j)
            f[p[i]+p[j]] += 2;
    }
    int T; scanf("%d", &T);
    while (T--) {
        int x; scanf("%d", &x);
        long long s = 0;
        for (int i = 4; i + i < x; ++i)
            s += f[i] * f[x-i] * 2;
        if (!(x & 1)) s += f[x>>1] * f[x>>1];
        printf("%lld\n", s);
    }
    return 0;
}

B 匹配最大異或 (Unaccepted)

  • 暴力60分
Show Code

C 染色相鄰的邊 (Unaccepted)

  • 鏈的情況寫掛了,只有60分
Show Code

D 垃圾分類 (Unaccepted)

  • 最後半小時40分暴力沒打出來,輸出大樣例10分,考完10分鐘就寫出來了暴力
Show Code