[构造 分治] UOJ#143. 【UER #5】万圣节的数列
来源:互联网 发布:什么是二维数组 编辑:程序博客网 时间:2024/04/29 14:38
构造题。好像找到了manchery搬的题的原题
首先,长度为1,2的等差序列是不可避免的。我们需要尽量减少长的等差序列。
最好就是长度大于等于3的一个都没有。怎么做到呢?
考虑3个数
所以我们把奇偶分成两边,这样就不存在跨过中线的等差子序列。
这样就有了一个解法:我们递归求解,每次根据2进制最末位分成两半,并右移一位。直到所有数都相等时,不能再分了。
这样是
#include<cstdio>#include<algorithm>using namespace std;const int maxn=505;int n,a[maxn],b[maxn],c[maxn];void Solve(int L,int R,int now){ if(now>30||L>=R) return; int p1=L,p2=R; for(int i=L;i<=R;i++) if((a[c[i]]>>now)&1) b[p1++]=c[i]; else b[p2--]=c[i]; for(int i=L;i<=R;i++) c[i]=b[i]; Solve(L,p1-1,now+1); Solve(p1,R,now+1);}int main(){ freopen("uoj143.in","r",stdin); freopen("uoj143.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]), c[i]=i; Solve(1,n,0); for(int i=1;i<=n;i++) printf("%d ",c[i]); }
阅读全文
0 0
- [构造 分治] UOJ#143. 【UER #5】万圣节的数列
- 【构造+分治】【UER #5】UOJ143 万圣节的数列
- UOJ UER#5 A 万圣节的南瓜灯
- [并查集] UOJ#142. 【UER #5】万圣节的南瓜灯
- 【UER #5】万圣节的南瓜灯
- UOJ #113. 【UER #2】手机的生产
- UOJ#136. 【UER #3】开学前的作文
- UOJ 245 [UER #7]天路
- UOJ#245. 【UER #7】天路
- uoj 246. 【UER #7】套路
- 【UOJ 244】【UER #7】短路
- 【UOJ 246】【UER #7】套路
- UOJ #244. 【UER #7】短路
- 【UOJ 245】【UER #7】天路
- 【UOJ】#244. 【UER #7】短路
- 【UOj】#245. 【UER #7】天路
- 【UOJ】#246. 【UER #7】套路
- [DP套DP] UOJ #141 【UER #4】量子态的棋盘
- 简单的Contentprovider和contentResolver
- UC/OS-II(二)自学笔记
- 顺序队列和链队列
- AS移动开发 随手记 string类型转换int类型
- 判断网络工具类
- [构造 分治] UOJ#143. 【UER #5】万圣节的数列
- python 文件操作总结
- CC2540 Large OAD实现程序无线升级
- 并发测试
- Eigen: C++开源矩阵计算工具——Eigen的简单用法
- [日推荐]『车助手360』车主必备
- 全球多个 TOP 网站藏挖矿代码,5 亿 PC 沦为矿工
- 使用EditText+ListView并结合TextWatcher实现关键字筛选
- HDU