题目传送门

思路

大抵算是一道位运算入门题?

首先为了使 \(b_i\) 的字典序最大,我们注意到 \(b_1=a_1\),所以 \(a_1\) 必然是序列中最大的那个数。

接下来考虑贪心,设当前已经填了 \(k\) 个数,此时的或和为 \(a\),则我们从大往小扫,若 \(maxx\) 的第 \(i\) 位为 \(0\),则接下来我们最好凑出 \(1\) 来,因为 \(2^i>\sum_{j=1}^{i-1} 2^j\),如果实在凑不出来则 skip,如此贪心即可。

代码

#include<bits/stdc++.h>
using namespace std;
int const N=2e5+10;
int a[N],b[N],c[N],n,vis[N],k;
vector<int>q[50];
inline void chk(int &maxx,int id){
int mxp=0,maxn=maxx;
for (auto i:q[id]){
if (vis[i]) continue;
if ((a[i]|maxx)>maxn) maxn=(a[i]|maxx),mxp=i;
}
if (!mxp) return;
c[++k]=a[mxp];vis[mxp]=1;
maxx|=a[mxp];
return;
}
inline void chk(int x){for (int i=30;~i;--i) if (a[x]&(1<<i)) q[i].push_back(x);}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int t;cin>>t;
while (t--){
int maxx=0,mxp;cin>>n;
for (int i=30;~i;--i) q[i].clear();k=0;
for (int i=1;i<=n;++i) vis[i]=0;
for (int i=1;i<=n;++i){
cin>>a[i],chk(i);
if (a[i]>maxx) maxx=a[i],mxp=i;
}
vis[mxp]=1;c[++k]=maxx;
for (int i=30;~i;--i)
if (!(maxx&(1<<i)) && q[i].size()) chk(maxx,i);
for (int i=1;i<=k;++i) cout<<c[i]<<' ';
for (int i=1;i<=n;++i) if (!vis[i]) cout<<a[i]<<' ';
cout<<'\n';
}
return 0;
}

最新文章

  1. 开发者的利器:Docker 理解与使用
  2. build.gradle文件详解&lt;转&gt; 推荐
  3. DEV提示控件ToolTipControl
  4. bc:linux下命令行计算器
  5. javaweb 解决将ajax返回的内容用document.write写入,FireFox一直加载的问题
  6. mysql 数据类型,字符集
  7. &ldquo;耐撕&rdquo;团队 2016.04.07 站立会议
  8. Python快速教程
  9. 测试functional的bind以及相关功能
  10. 网站商务通链接快速标识v1.0.js
  11. 介绍一个好用的软件--多个WIN远程连接
  12. 自行修改android.jar使其包含隐藏api
  13. java复习(1)---java与C++区别
  14. javascript数组特性
  15. 一个请求过来都经过了什么?(Thrift版)
  16. jbe 可以用来修改Java class的字节码,配合jd-gui 使用
  17. TCP长连接与短连接、心跳机制
  18. Django的rest_framework的视图之基于通用类编写视图源码解析
  19. Java-Runoob-高级教程-实例-方法:06. Java 实例 – 方法覆盖
  20. js:浏览器插件

热门文章

  1. java 分别获取当前时间的年月日以及当前时间所在周的周一周末日期
  2. SSH(四)控制层、业务层、dao层类的创建以及applicationcontext.xml和struts.xml配置
  3. 【笔面试真题】ThoughtWorks-笔试-2022年1月21日
  4. websockets的原理
  5. 从0到1学Python丨图像平滑方法的两种非线性滤波:中值滤波、双边滤波
  6. js的基本数据类型和引用数据类型及深拷贝浅拷贝
  7. react 高效高质量搭建后台系统 系列 —— 脚手架搭建
  8. Linux基础 文件和目录
  9. 3、mysql着重号解决关键字冲突
  10. 绿色版MySQL8.0.26安装流程