江苏省赛C - Cats 找规律+模拟
Posted karshey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了江苏省赛C - Cats 找规律+模拟相关的知识,希望对你有一定的参考价值。
输入1:
1
输出1:
1
输入2:
3
输出2:
1 2 3
题意:
1-20的数字,两个相同数字不能相邻,且他们之间的最小值要严格小于它们。求长度为n的这样的序列。
思路:
大的插在现有的空中间,如下:
1
2 1 2
3 2 3 1 3 2 3
4 3 4 2 4 3 4 1 4 3 4 2 4
代码:
#include<bits/stdc++.h>
using namespace std;
#define fir(i,a,n) for(int i=a;i<=n;i++)
#define ll long long
#define pb push_back
const int N=1e6+10;
int n;
vector<int>v;
int a[N];
int main()
cin>>n;
v.pb(1);
int now=2,temp=2;//temp 次数
while(v.size()<=n)
auto it=v.begin();
for(int i=0;i<temp;i++)
v.insert(it,now);
it=v.begin()+(i+1)*2;//cout<<'a';
temp*=2;
//v.insert(v.end(),now);
now++;
cout<<v[0];
fir(i,1,n-1) cout<<" "<<v[i];
return 0;
以上是关于江苏省赛C - Cats 找规律+模拟的主要内容,如果未能解决你的问题,请参考以下文章
2017年icpc西安网络赛 Maximum Flow (找规律+数位dp)