Gym

来源:互联网 发布:1015357422的喜欢乐乎 编辑:程序博客网 时间:2024/06/08 14:18

猜一下的话 只要 2*k 的点就够

胡乱推一下可能会往 k 叉树上面想,我们队想到了但是后面每想到 ==

知道了 构造 k 叉树后,第三层的点要放到最右面的结点上

k = 3 时:

1     2 3

     /     \      /       \   /       \

2 3  3 4 4 1

    /     /      / 

4 12



#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <vector>#include <set>#include <stack>#include <map>#include <climits>using namespace std;typedef long long ll;const int maxn = 30 + 7, INF = 0x3f3f3f3f, mod = 1e9 + 7;int k;int main() {    scanf("%d", &k);    int m = 2 * k;    printf("%d\n", m);    for(int i = 1; i <= k; ++i) {        for(int j = i+1; j <= i+k; ++j)            printf("%d %d\n", i, j);        for(int j = 1; j < k; ++j)            printf("%d %d\n", i+k, (i+k+j > m ? (i+k+j)%m : i+k+j ));    }    return 0;}


原创粉丝点击