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思维题,考虑到初值.字符集,然后是 ...
随机推荐
- 【每日一题】【dfs重载原始函数&循环/函数结束条件&左右下标在数组中位置的确定】2022年2月7日-NC12 由先序和中序遍历重建二叉树
描述给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建 ...
- Qwt开发笔记(二):Qwt基础框架介绍、折线图介绍、折线图Demo以及代码详解
前言 QWT开发笔记系列整理集合,这是目前使用最为广泛的Qt图表类(Qt的QWidget代码方向只有QtCharts,Qwt,QCustomPlot),使用多年,系统性的整理,本系列旨在系统解说并 ...
- Go 每日一库之 go-carbon,优雅的golang日期时间处理库
Carbon 是一个轻量级.语义化.对开发者友好的 golang 时间处理库,支持链式调用. Carbon 已被 awesome-go 收录, 如果您觉得不错,请给个 star 吧. github.c ...
- [数学建模]层次分析法AHP
评价类问题. 问题: ① 评价的目标? ② 可选的方案? ③ 评价的指标? 分层 目标层.准则层.方案层 层次分析法可分为四个步骤建立: 第一步:标度确定和构造判断矩阵: 第二步:特征向量,特征根计算 ...
- Jenkins&&gitlab
DevOps 强调整个组织的合作以及交付和基础设施变更的自动化 gitlab下载: 下载地址: https://docs.gitlab.com/ee/install/requirements.html ...
- DevSecOps 需要知道的十大 K8s 安全风险及建议
Kubernetes (K8s)是现代云原生世界中的容器管理平台.它实现了灵活.可扩展地开发.部署和管理微服务.K8s 能够与各种云提供商.容器运行时接口.身份验证提供商和可扩展集成点一起工作.然而 ...
- 使用nodejs编写api接口并部署到服务器上
一.用node.js编写api接口 1.安装node环境,没有就去下载nodejs, 下载地址 2.创建一个node项目, 新建一个目录文件,例node_proxy 3.在新建的node项目执行npm ...
- 2_cookie、session、token、sign
一.关于cookie.session.token.sign 借鉴链接:https://juejin.cn/post/7147913027785293855
- bbs项目(部分讲解)
文章评论业务完善 提交评论 评论框里面的内容会清空 然后页面会有一个临时评论样式出现 页面刷新才会出现评论楼样式 研究子评论特性 每个评论右侧都应该有回复按钮 点击就可以填写子评论 点击回复按钮具体动 ...
- [cocos2d-x]飞机大战 遇到的bug和总结(二)
第一点 声音文件最好不要使用mp3格式,因为我在同时使用背景音乐和playeffect()的时候,出现了bug,两者的音效不能同时出现(应该是格式问题),并且声音在windows上运行的时候加载非常慢 ...