AGC 012 C - Tautonym Puzzle
Posted jyyhh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AGC 012 C - Tautonym Puzzle相关的知识,希望对你有一定的参考价值。
神仙构造啊qwqwq。
窝一开始只想到一个字符串长度是 O(log(N)^2) 的做法:可以发现一段相同的长度为n的字符串的贡献是 2^(n-1)-1 ,可以把它看成类二进制,枚举用了多少种字符,把n加上这个种类数,然后每种就可以看成一个二进制位啦,只要 n+种类数 这个数的二进制中1的个数 <= 种类数就可以构造啦,肯定是有解的(考虑种类数最多可以是100)。
然鹅最后字符串长只能是200啊,,,,迷
然后%了一发题解发现是一个神仙构造,窝也懒得说了直接贴上题解啦qwq,一段愉快的英文阅读!
#include<bits/stdc++.h> #define ll long long using namespace std; int n,a[205],L,R,now; ll cnt; inline void solve(){ int i=40; L=101,R=L-1; for(;!((1ll<<i)&cnt);i--); for(i--;i>=0;i--){ a[++R]=++now; if((1ll<<i)&cnt) a[--L]=++now; } n=R-L+1; for(int i=1;i<=n;i++) a[i]=a[i+L-1]; for(int i=n+1;i<=n*2;i++) a[i]=i-n; n<<=1; } int main(){ scanf("%lld",&cnt),cnt++; solve(),printf("%d ",n); for(int i=1;i<=n;i++) printf("%d ",a[i]); puts(""); return 0; }
以上是关于AGC 012 C - Tautonym Puzzle的主要内容,如果未能解决你的问题,请参考以下文章
AtCoder思维图论Splatter Painting(AGC012)