Kolakoski Posted on 2019-07-05 | In acm , 做题记录 , 2017杭电多校赛 题目链接题意给出一个规则构造数列。 思路按题意暴力模拟即可。 Code12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include<bits/stdc++.h>using namespace std;#define ll long long#ifndef ONLINE_JUDGE#define dbg(x...) do{cout << "\033[33;1m" << #x << "->" ; err(x);} while (0)void err(){cout << "\033[39;0m" << endl;}template<template<typename...> class T, typename t, typename... A>void err(T<t> a, A... x){for (auto v: a) cout << v << ' '; err(x...);}template<typename T, typename... A>void err(T a, A... x){cout << a << ' '; err(x...);}#else#define dbg(...)#endif#define inf 1ll << 50const int maxn=1e7+10;int arr[maxn];queue<int> q;void init(){ int cnt=0; arr[++cnt]=1; q.push(2); int cur=1; int flag=1; while(!q.empty() && cnt<maxn-2){ int tmp=q.front(); q.pop(); cnt++; arr[cnt]=((arr[cnt-1]-1)^1)+1; q.push(arr[cnt]); if(flag){ q.pop(); flag--; } if(tmp==2){ cnt++; arr[cnt]=arr[cnt-1]; q.push(arr[cnt]); } }}int main(){ init(); int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); printf("%d\n",arr[n]); }}