标签:
这个题是传说中的 Hack 狂魔 qmqmqm 出的构造题。当然要神。
这个题的本质实际上就是构造一个图,然后使得任意两点间都有长度为 $k$ 的路径相连,然后对于任意的 $i < k$,都存在两个点使得这两个点没有长度为 $i$ 的路径相连。
我的构造方法就是:
这样的解是一组可行解。
时间复杂度 $O(n^2)$,空间复杂度 $O(1)$。
1 #include <cstdio> 2 #define abs(x) ((x) > 0 ? (x) : -(x)) 3 int n, k; 4 int main() 5 { 6 scanf("%d%d", &n, &k); 7 for (int i = 1; i <= n; putchar(‘\n‘), i ++) 8 for (int j = 1; j <= n; j ++) 9 if ((i <= n - k + 1 && j <= n - k + 1) || abs(i - j) <= 1) putchar(‘1‘); 10 else putchar(‘0‘); 11 return 0; 12 }
标签:
原文地址:http://www.cnblogs.com/gromah/p/4586542.html