2021 牛客多校 10 题解
H War of Inazuma (Easy Version)
题意
在一个 维超立方体上,有 个顶点,每个顶点分别由两支军队占领,记为 ,现在要求构造出一个序列 ,其中 代表 顶点 由什么军队占领。其中,当顶点 与顶点 相邻,则 二进制位中有且仅有一位不同。且要求顶点 相邻的顶点中与顶点 的军队相同的顶点数不超过 。
直接考虑将顶点 的相邻顶点均与顶点 的占领军队不同,则可发现即顶点编号的二进制中 的个数相同的顶点的占领军队相同,即按照顶点编号的二进制中 的个数构造占领的军队即可。
#include <bits/stdc++.h> #define rep(i, l, r) for (int i = l; i <= r; ++i) using namespace std; typedef long long ll; signed main() { int n; scanf("%d", &n); int t = 1 << n; rep(i, 0, n - 1) { if (__builtin_popcount(i) & 1) putchar('1'); else putchar('0'); } return 0; }