CF1742G Orray
思路
大抵算是一道位运算入门题?
首先为了使 \(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;
}
CF1742G Orray的更多相关文章
- Codeforces Round #827 (Div. 4) 复盘+题解
原比赛链接 复盘: ABC签到,手速太慢了. D捣鼓了好久才想起来从更小的值域出发去做. E简单二分答案. 然后就time out了.D题搞错方向浪费太久时间了. F思维题,考虑到初值.字符集,然后是 ...
随机推荐
- 《HelloGitHub》第 80 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...
- 环境安装-Centos7.4安装及配置
环境安装-Centos7.4安装及配置 〇.资料汇总 一.虚拟机安装 1.下载地址 https://pan.baidu.com/s/1zcOp06HX4OxPdsCCGkHbXQ 提取码:7777 2 ...
- 【Java SE进阶】Day07 等待与唤醒案例、线程池、Lamdba表达式
一.等待唤醒机制 1.线程间通信 多个线程处理同一个资源,就存在线程通信问题(线程间存在竞争与协作机制) 为什么处理:为了 保证多个线程有规律地完成同一任务 如何处理:避免对共享变量争夺,需要等待唤醒 ...
- 【Java SE】Day08 String类、static关键字、Arrays类、Math类
一.String类 1.概述 所有双引号字符串,都是String类的对象 字符串常量,会存在字符串常量池中 2.创建 构造函数--空构造.字符数组.字节(byte ASCII码)数组 3.常用方法-- ...
- 【每日一题】【双端降序队列Deque】2021年12月28日-239. 滑动窗口最大值
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 来源:力扣(L ...
- vulnhub靶场渗透实战12-driftingblues2
vbox导入,网络桥接. 靶机下载地址:https://download.vulnhub.com/driftingblues/driftingblues2.ova 一:信息收集 1:主机发现. 2: ...
- VSCODE 中.art文件识别为html文件
setting.json文件中 { "git.ignoreMissingGitWarning": true, "explorer.confirmDelete": ...
- jQuery事件与动态效果
目录 一:阻止后续事件执行 1.推荐使用阻止事件 2.未使用 阻止后续事件执行 3.使用阻止后续事件执行 二:阻止事件冒泡 1.什么是事件冒泡? 2.未阻止事件冒泡 3.阻止事件冒泡 4.2.阻止冒泡 ...
- Jmeter在结果树中查看响应数据为空
今天遇到了一个比较尴尬的问题,吭哧吭哧了大半天,后来咨询了开发SO的一下解决了. 问题: 在调用接口时取样器结果中显示response code:200, response message:OK,但是 ...
- 将git仓库从submodule转换为subtree
三个脚本 Alexander Mikhailian cat .gitmodules |while read i do if [[ $i == \[submodule* ]]; then mpath=$ ...