题意:

构造一个长度不超过200,数字不大于100的序列,使得合法子序列的个数恰好为N;

合法子序列是指一个长度为偶数的序列,前一半和后一半相等。

解法:

考虑这种构造方法

假设我们当前有序列为 $x_1, x_2, x_3, x_4, 1, 2, 3, 4$,有 $cnt$个

那么 $x_1, x_2, x_3, x_4, 5, 1, 2, 3, 4, 5$,有 $2cnt+1$ 个

   $5 ,x_1, x_2, x_3, x_4, 1, 2, 3, 4, 5$,有 $cnt+1$ 个。

这样考虑递归

$solve(1) = {1}$

$solve(n) = solve(\frac{n-1}{2}) + {t}$

$solve(n) = {t} + solve(n-1)$

总共会有 $O(2 * logn)$ 个元素,数字大小为 $O(logn)$。

#include <bits/stdc++.h>

#define LL long long
#define N 110 using namespace std; deque<int> ans1,ans2;
int modify[N],tot; void solve(LL n)
{
if(n==) return;
if((n-)%==)
{
modify[++tot] = ;
solve((n-)/);
}
else
{
modify[++tot]=;
solve(n-);
}
} int main()
{
LL n;
cin>>n;
int tim=;
solve(n);
ans1.push_back();
for(int i=tot;i>=;i--)
{
if(modify[i]==) ans1.push_back(++tim);
else ans1.push_front(++tim);
}
cout<<*(int)ans1.size()<<endl;
for(int i=;i<(int)ans1.size();i++) printf("%d ",ans1[i]);
for(int i=;i<(int)ans1.size();i++) printf("%d%c",i+,i==((int)ans1.size())-? '\n':' ');
return ;
}

Tautonym Puzzle的更多相关文章

  1. 【AtCoder Grand Contest 012C】Tautonym Puzzle [构造]

    Tautonym Puzzle Time Limit: 50 Sec  Memory Limit: 256 MB Description 定义一个序列贡献为1,当且仅当这个序列 由两个相同的串拼接而成 ...

  2. Atcoder Grand 012 C - Tautonym Puzzle

    题意: 构造一个字符串,使得这个字符串有只有n个形如AA这样的子序列. 神TM构造题不会做,, 我们构造一个长度为2*m的字符串,前m个是一个1-m的排列,后m个就是按顺序1-m. 这样这个串里符合要 ...

  3. [AT2363] [agc012_c] Tautonym Puzzle

    题目链接 AtCoder:https://agc012.contest.atcoder.jp/tasks/agc012_c 洛谷:https://www.luogu.org/problemnew/sh ...

  4. AGC 012 C - Tautonym Puzzle

    题面在这里! 神仙构造啊qwqwq. 窝一开始只想到一个字符串长度是 O(log(N)^2) 的做法:可以发现一段相同的长度为n的字符串的贡献是 2^(n-1)-1 ,可以把它看成类二进制,枚举用了多 ...

  5. AtCoder Grand Contest 012 C:Tautonym Puzzle

    题目传送门:https://agc012.contest.atcoder.jp/tasks/agc012_c 题目翻译 如果一个字符串是好的,那么这个字符串的前半部分和后半部分肯定一模一样.比如\(a ...

  6. AT2363-[AGC012C]Tautonym Puzzle【构造】

    正题 题目链接:https://www.luogu.com.cn/problem/AT2363 题目大意 给出\(n\),要求构造一个字符串\(s\),使得能够找出恰好\(n\)个子序列使得这个子序列 ...

  7. AtCoder Grand Contest 012

    AtCoder Grand Contest 012 A - AtCoder Group Contest 翻译 有\(3n\)个人,每一个人有一个强大值(看我的假翻译),每三个人可以分成一组,一组的强大 ...

  8. 【AtCoder】AGC012

    AGC012 A - AtCoder Group Contest 从最后开始间隔着取就行 #include <bits/stdc++.h> #define fi first #define ...

  9. A♂G&C012

    A♂G&C012 A AtCoder Group Contest 从大到小sort后输出\(a_2+a_4+a_6+\ldots a_{2n}\) 好♂啊,只会背结论/kk B Splatte ...

随机推荐

  1. Android实战简易教程-第二十三枪(基于Baas的用户注冊和登录模块实现!)

    接着上两篇文章.我们基于Bmob提供的API实现用户登录功能.总体看一下代码. 1.注冊页面xml: <RelativeLayout xmlns:android="http://sch ...

  2. 将UIBezierPath存为自己定义格式的字符串,再将字符串转为UIBezierPath

    <pre name="code" class="objc">自己定义字符串格式为:@"123.02,234.23|321.23,432.0 ...

  3. node JS 微信开发

    JS-SDK 要点 微信测试号; 扫码登录;无需认证(只是名称统一为微信测试号)http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/logi ...

  4. [深入浅出Cocoa]iOS程序性能优化

    本文转载至 http://blog.csdn.net/kesalin/article/details/8762032 [深入浅出Cocoa]iOS程序性能优化 罗朝辉 (http://blog.csd ...

  5. 【BZOJ3193】[JLOI2013]地形生成 DP

    [BZOJ3193][JLOI2013]地形生成 Description 最近IK正在做关于地形建模的工作.其中一个工作阶段就是把一些山排列成一行.每座山都有各不相同的标号和高度.为了遵从一些设计上的 ...

  6. [Phoenix] 七、如何使用自增ID

    摘要: 在传统关系型数据库中设计主键时,自增ID经常被使用.不仅能够保证主键的唯一,同时也能简化业务层实现.Phoenix怎么使用自增ID,是我们这篇文章的重点. 在传统关系型数据库中设计主键时,自增 ...

  7. 【LeetCode】Maximum Depth of Binary Tree

    http://oj.leetcode.com/problems/maximum-depth-of-binary-tree/ public class Solution { public int max ...

  8. 一些js及css样式

    人体时钟: 源码: <div> <embed wmode="transparent" src="https://files.cnblogs.com/fi ...

  9. PAT天梯赛 L2-026. 小字辈 【BFS】

    题目链接 https://www.patest.cn/contests/gplt/L2-026 思路 用一个二维vector 来保存 每个人的子女 然后用BFS 广搜下去,当目前的状态 是搜完的时候 ...

  10. 最大流EK算法

    给定一个有向图G=(V,E),把图中的边看作 管道,每条边上有一个权值,表示该管道 的流量上限.给定源点s和汇点t,现在假设 在s处有一个水源,t处有一个蓄水池,问从 s到t的最大水流量是多少? 网络 ...