题目链接


有一种操作f(x,y)=(x∣y)−yf(x,y)=(x|y)−yf(x,y)=(x∣y)−y,给你一个序列a1,a2,...,an。a1,a2,...,an。a1,a2,...,an。
让你改变一下序列a的顺序,让f(f(...f(f(a1,a2),a3),...,an−1),an)f(f(...f(f(a1,a2),a3),...,an−1),an)f(f(...f(f(a1,a2),a3),...,an−1),an)最大。


我们看这样一个操作他代表着什么?

我们把x,y拆解成二进制,x|y就相当于让两方都有1的一起有1了,然后−y就是让y位置上有1的减去。

举个例子,比如说x=1101,y=0111,那么就相当于说把x的最后一位1和第二位1带走了。

把所有数字拆成二进制,如果一个位置上的1,出现了多次(大于1),那么这个位置上的1肯定留不住。

所以我们就找最高位的出现一次的1,然后把它放到最前面去,之后的数字随便摆放。

可以模拟一下这个样例,9 5 9,把5摆到最前面上是最优解。


#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int n, a[maxn];int num[40];
int cnt;int main()
{scanf("%d", &n);for(int i = 1; i <= n; i++){scanf("%d", &a[i]);int x = a[i];int tmp = 0;while(x){if(x&1) num[tmp++] += 1;else num[tmp++] += 0;x >>= 1;}cnt = max(cnt, tmp);}int pos = -1;for(int i = cnt-1; i >= 0; i--)if(num[i] == 1){pos = i;break;}if(pos == -1){for(int i = 1; i <= n; i++)printf("%d ", a[i]);return 0;}for(int i = 1; i <= n; i++){if(a[i]>>pos&1){swap(a[i], a[1]);break;}}for(int i = 1; i <= n; i++)printf("%d ", a[i]);return 0;
}

贪心 ---- C. Anu Has a Function位运算+贪心证明相关推荐

  1. Anu Has a Function——位运算

    首先,第一行献给我痛苦的两个小时调试 题意:排序数组,使得f(f(-f(f(a1,a2),a3),-an−1),an)f(f(-f(f(a1,a2),a3),-an−1),an) f(f(-f(f(a ...

  2. C. Anu Has a Function(位运算思维)

    题目 思路:对于两个二进制数f(x,y)=x|y-y 举两个例子 x 11101 y 10100 f(x,y)=01001 x 111111 y 1010 f(x,y)=110101 我们可以发现f( ...

  3. CH - 0104 起床困难综合症(位运算+贪心)

    题目链接:点击查看 题目大意:我们需要构造一个初始值start,范围在[0,m],要求使用这个初始值进行k次操作后得到的答案最大,每次操作分为三个类型: AND x:让当前答案与x进行按位与 OR x ...

  4. C. Anu Has a Function(思维+位运算+贪心)

    https://codeforces.com/contest/1300/problem/C 和昨晚这场的div2的B有异曲同工之妙. 思路:对每一个数位进行二进制位数的考虑. f(x,y)=(x|y) ...

  5. CodeForces - 1368D AND, OR and square sum(位运算+贪心)

    题目链接:点击查看 题目大意:给出 n 个数组成的序列 a ,现在可以进行的操作是,任选两个下标 i 和 j ,满足 i != j ,使得: 设 x = a[ i ] , y = a[ j ] a[ ...

  6. jzoj4274-终章-剑之魂【位运算,贪心】

    正题 大意 有n把剑,每一把剑有一个值aiaia_i,然后两把剑的契合值是ai and ajaiandaja_i\ and \ a_j,求最大契合值. 解题思路 先把每个a转换成二进制 我们可以先从高 ...

  7. 【NOI2014】起床困难综合症 位运算+贪心

    这道题先求出0和-1经过处理后的答案 具体看代码吧 #include<cstdio> #include<cstring> #include<algorithm> u ...

  8. Anu Has a Function CodeForces - 1300C(二进制位运算)

    Anu has created her own function ff: f(x,y)=(x|y)−yf(x,y)=(x|y)−y where || denotes the bitwise OR op ...

  9. USACO2.1【bfs,排序,贪心,dfs,位运算】

    前言 开始刷USACO的题了. 正题 刷前必备技能:OI常识,bfs,dfs,位运算,基础贪心,快速排序. T1:城堡 TheCastleThe CastleTheCastle 评测记录: https ...

最新文章

  1. 0.数据结构学习笔记大纲
  2. 第二讲 html5框架+Crosswalk打包app 以及 Angularjs 基础(初步认识了解Angularjs)
  3. js弹框带传值父窗口给子框_JavaScript实现弹出子窗口并传值给父窗口
  4. 8 cocos2dx添加场景切换效果,控制场景切换彻底完成之后再执行动画
  5. OpenCV isContinuous()连续存储的问题
  6. logstash filter 处理json数据按原始数据字段数据存储
  7. JavaSE Collections类 , Iterator迭代器 , 增强for循环
  8. Delphi2010安装TWordApplication控件
  9. 模式实例之——中介者实例
  10. java堆排序递归代码,无原理版,比较好理解
  11. 2019年华为JAVA面试题系列
  12. MATLAB控制有效数字
  13. 搜索量过低百度和谷歌竞价账户分别是怎么处理的
  14. eap wifi 证书_WIFI用户EAP-TLS认证.pdf
  15. Terra Gate 安装
  16. python之pil的使用
  17. 那年杏花微雨,你说你是DOM
  18. 圣诞树的雪花飘飘(结尾附源码)
  19. 利用公交刷卡数据分析北京职住关系和通勤出行
  20. AutoDL 算力云 服务器租用教程

热门文章

  1. python中的pop()函数和popleft()函数
  2. attr,abbr,addr三个常见的单词意思
  3. Linux期末复习题库(4)
  4. Linux里检查的一些目录!
  5. 面试官:连YOLO都搞不定,是自己走还是我送你
  6. 如何在SAP Cloud for Customer自定义BO中创建访问控制
  7. CentOS7图形界面与命令行界面切换
  8. Luck Club-SDT 去中心化的游戏
  9. iOS 的组件化开发
  10. 练习 MongoDB 操作 —— 分片篇(五)