zoukankan      html  css  js  c++  java
  • 【题解】AGC012C Tautonym Puzzle(人类智慧)

    【题解】AGC012C Tautonym Puzzle(人类智慧)

    一个naive的想法是,先放len个(a),此时有(2^{len}-1)的贡献,然后递归到子问题,这个很遗憾是过不了的(I开头的神仙:但是我可以过)

    但是这个启示我们一件事情,我们想办法利用二进制倍增来弄。

    考虑增量构造,我们把这个序列分为前后两半部分,每次我可以选择插入两个相同的之前没有的数一个在最后面一个在:

    • 在中间,答案乘2
    • 在两边,答案减一

    然后直接快速幂搞搞

    //@winlere
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<deque>
    
    using namespace std;  typedef long long ll;
    
    int main(){
    	ll n;
    	deque<int> ans;
    	cin>>n; ++n;
    	while(n)
    		if(n&1) n>>=1,ans.push_back(ans.size()+1);
    		else --n,ans.push_front(ans.size()+1);
    	cout<<(ans.size()<<1)<<endl;
    	for(auto t:ans) cout<<t<<' ';
    	for(int t=1;t<=(int)ans.size();++t) cout<<t<<' ';
    	cout<<endl;
    	return 0;
    }
    
    
  • 相关阅读:
    【每日日报】第四十六天
    jsp动作标识
    JSP注释
    request对象
    Servlet的创建和配置
    基于图书管理系统的浏览
    在JSP中应用JavaBean
    交流会
    基于图书管理系统的改
    基于图书管理系统的增
  • 原文地址:https://www.cnblogs.com/winlere/p/12983671.html
Copyright © 2011-2022 走看看