“21 天好习惯”第一期-11

H War of Inazuma (Easy Version)

题意

在一个 n n n 维超立方体上,有 2 n 2^n 2n 个顶点,每个顶点分别由两支军队占领,记为 a , b a,b a,b ,现在要求构造出一个序列 s s s ,其中 s i s_i si 代表 顶点 i i i 由什么军队占领。其中,当顶点 i i i 与顶点 j j j 相邻,则 i , j i,j i,j 二进制位中有且仅有一位不同。且要求顶点 i i i 相邻的顶点中与顶点 i i i​ 的军队相同的顶点数不超过 ⌈ n   ⌉ \lceil \sqrt{n}\ \rceil n  

直接考虑将顶点 i i i 的相邻顶点均与顶点 i i i 的占领军队不同,则可发现即顶点编号的二进制中 1 1 1 的个数相同的顶点的占领军队相同,即按照顶点编号的二进制中 1 1 1 的个数构造占领的军队即可。

#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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值