多校7 HDU-6130 Kolakoski 构造数列 & 模拟
2017-08-16 00:07
423 查看
原题链接:
HDU-6130
大意:
生成 Kolakoski 序列,查询第 n 个数。
Kolakoski 满足很有意思的性质。 a[1]=2,a
表示第 n 个组有多少个数字(把连续的相同数字看成一组
前几个是
分组后
此外还有一些性质:
没有循环节、没有通项公式、无限数列、具体 wiki 上有很多。
思路:
这是一个构造题,准确地说是一个模拟题。。涉及到我的知识盲区了,有必要补一下,比赛的时候队友马上打掉了,当时就不再想了。
HDU-6130
大意:
生成 Kolakoski 序列,查询第 n 个数。
Kolakoski 满足很有意思的性质。 a[1]=2,a
表示第 n 个组有多少个数字(把连续的相同数字看成一组
前几个是
1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,
分组后
1,22,11,2,1,22,1,22,11,2,11,22,1,2,11,2,1,22,11
即1,2 ,2, 1,1,2, 1,2, 2, 1, 2, 2,1,1,2,...
此外还有一些性质:
没有循环节、没有通项公式、无限数列、具体 wiki 上有很多。
思路:
这是一个构造题,准确地说是一个模拟题。。涉及到我的知识盲区了,有必要补一下,比赛的时候队友马上打掉了,当时就不再想了。
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define mem(s,t) memset(s,t,sizeof(s)) #define D(v) cout<<#v<<" "<<v<<endl #define inf 0x3f3f3f3f #define pb push_back //#define LOCAL inline void read(int &x){ x=0;char p=getchar(); while(!(p<='9'&&p>='0'))p=getchar(); while(p<='9'&&p>='0')x*=10,x+=p-48,p=getchar(); } const int MAXN=2e7+10; int a[MAXN]; a[1]=1;a[2]=2; int v=2,j=2; for(int i=2;i<MAXN-5;i++){ int len=a[i]; while(len){ a[j++]=v; len--; if(j>MAXN-5) break; } if(j>MAXN-5) break; v=v%2+1; } int t; read(t); while(t--){ int n; read(n); printf("%d\n",a ); } }
相关文章推荐
- HDU6130 Kolakoski(模拟,2017 HDU多校联赛 第7场)
- hdu 6130 Kolakoski(多校联赛)
- 【HDU 6130 Kolakoski】& Kolakoski & 打表
- HDU 1103.Flo's Restaurant【模拟】【3月2】
- hdu 6130 Kolakoski
- hdu 4915 Parenthese sequence(模拟)2014多校训练第5场
- 2015多校第九场 HDU 5402 Travelling Salesman Problem 棋盘染色法,构造
- POJ 3505 && HDU 2341 Tower Parking(简单模拟)
- NYOJ 524 & HDU 2054 A==B?(模拟)
- hdu 2577- How to Type (dp)&&(模拟)
- HDU-2017 多校训练赛7-1011-Kolakoski
- HDU 6130 Kolakoski 打表
- HDU - 4007 Dave (模拟&技巧)数学几何正方形最多可圈几个点
- hdu 5289 Assignment(2015多校第一场第2题)RMQ+二分(或者multiset模拟过程)
- hdu 5349 MZL's simple problem 2015多校联合训练赛#5 简单题
- POJ 3654 & ZOJ 2936 & HDU 2723 Electronic Document Security(模拟)
- HDU 1799:循环多少次?【dp & 数列组合】
- hdu 5640 King's Cake(模拟)
- HDU 1009 FatMouse' Trade (模拟)
- HDU 5402 Travelling Salesman Problem(棋盘染色 构造 多校啊)