zoukankan      html  css  js  c++  java
  • AGC 012 C

    题面在这里!

        神仙构造啊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; 
    }
    

      

  • 相关阅读:
    敏捷开发宣言
    OpenGL SL 优化要点
    Cocoa Touch 开发框架
    MSIL详解
    Android之Services
    Android之ActivityII
    Android之Activity
    托管执行过程
    Android之Content ProviderII
    Android之Content Providers
  • 原文地址:https://www.cnblogs.com/JYYHH/p/9306368.html
Copyright © 2011-2022 走看看