2015年6月30日 星期二

Codeforces Round #306 (Div. 2), problem: (D) Regular Bridge

只要是偶數,就不可能,因為k-1 + n*k是奇數無法被2整除
然後 就是構造奇數case

#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cmath>
using namespace std;

typedef long long int int64;

void ff(int st, int k){
    for(int lx = 1;lx <= k-1;lx++) printf("%d %d\n", st, st+lx);
    for(int lx = 1;lx <= k-1;lx++)
        for(int ly = k;ly <= 2*k-2;ly++)
            printf("%d %d\n", st+lx, st+ly);
    for(int lx = k;lx <= 2*k-2;lx+=2)
        printf("%d %d\n", st+lx, st+lx+1);
    return;
}

int main(){
    int k; scanf("%d", &k);
    if(k%2 == 0){
        puts("NO");
        return 0;
    }
    puts("YES");
    printf("%d %d\n", 4*k-2, (k-1)*(2*k+1)+1);
    printf("%d %d\n", 1, 2*k);
    ff(1, k);
    ff(2*k, k);
    return 0;
}

沒有留言:

張貼留言