题目

思路:对于两个二进制数f(x,y)=x|y-y 举两个例子 x 11101 y 10100 f(x,y)=01001 x 111111 y 1010 f(x,y)=110101 我们可以发现f(x,y)结果就是将y中的对应二进制为一的地方如果x中相对应的也为1则将x相应位置变为0,剩下的x就是结果。而对于一个序列我们将对序列第一个元素进行(n-1)次这种“相减”运算,可以发现对于一个序列我们只要确定了第一个元素的值,其他后面的元素无论怎样排序结果都相同。如此我们只需先将每个元素所有位的二进制数存储一遍求个总和,如果存储的某位上>=2,则必有两个元素都有在这个位上是1,最终结果在此位上会相减为0。所以只有某个位是1,才能够保存下来,那么我们只需找到存储中最大的位上是1的元素即可(由二进制的性质所有后面的位数相加的值不可能比前面的大),细节见代码。

Code:

#include<iostream>
#include<string>
#include<map>
#include<algorithm>
#include<memory.h>
#include<cmath>
#include<bitset>
#define pii pair<int,int>
#define FAST ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
typedef long long ll;
const int Max = 1e6 + 5;
int lst[Max];
int Mod = 1e9 + 7;int main()
{FAST;int n;cin >> n;map<int, int> ma;for (int i = 1;i <= n;i++){int g, t = 0;cin >> g;lst[i] = g;while (g){if (g % 2)ma[t]++;g /= 2;t++;}}int f = -1;for (int i = 35;i >= 0;i--)if (ma[i] == 1) {f = i;break;}if (f == -1)for (int i = 1;i <= n;i++)cout << lst[i] << " ";else{int q=0;for (int i = 1;i <= n;i++){int g = lst[i], t = 0;while (g){if (g % 2==1 && t == f){q = i;break;}g /= 2;t++;}if (q)break;}int k = lst[1];lst[1] = lst[q];lst[q] = k;for (int i = 1;i <= n;i++)cout << lst[i] << " ";}cout << endl;
}

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)−yf(x,y)=(x|y)−yf(x,y)=(x∣y)−y,给你一个序列a1,a2,...,an.a1,a2,...,an.a1,a2,...,an. 让 ...

  3. C .Adding Powers codeforces(位运算思维)

    outputstandard output Suppose you are performing the following algorithm. There is an array v1,v2,-, ...

  4. 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 ...

  5. XOR-gun (位运算,思维,区间暴力)

    XOR-gun (位运算,思维,区间暴力) 题面翻译 给定一个长为 2≤n≤1052\leq n \leq10^52≤n≤105 的不降序列,每次操作可以任选相邻的两个数,并将这两个数替换为两个数按位 ...

  6. Codeforces #618 div.2 C. Anu Has a Function

    C. Anu Has a Function time limit per test1 second memory limit per test256 megabytes inputstandard i ...

  7. AC. Anu Has a Function

    A&C. Anu Has a Function Codeforces Round #618 (Div. 1&2) 题目链接 关键词 greedy math *1500 位运算 解题思路 ...

  8. Codeforces Round #618 (Div. 1)-----A. Anu Has a Function

    提示: Codeforces Round #618 (Div. 1)-----A. Anu Has a Function 题意: 定义一个函数f(x , y) = f(x | y) - y 给定一个长 ...

  9. C++学习笔记-----用位运算实现加减乘除

    C++学习笔记-----用位运算实现加减乘除 原文:http://blog.csdn.net/sinat_35261315/article/details/72904945 数据在计算机内存中是以二进 ...

最新文章

  1. 基于linux智能家居系统设计,基于Linux的智能家居的设计(2)
  2. SpringBoot_web开发-引入thymeleaf
  3. SQL2008使用json.net实现XML与JSON互转
  4. [Redis6]新数据类型_Geospatial
  5. 时间管理—如何充分利用你的24小时
  6. 在.NET环境禁止别人调用代码
  7. CSDN Markdown编辑器帮助文档
  8. HDU-4292-Food(最大流匹配问题)
  9. iMazing2注册机如何备份苹果手机的通话记录?
  10. Axure第11享:Axure汉化方法?
  11. CAN报文解析—案例
  12. Symantec的SEP服务器(SEPM)从12.1 RU6MP5 升级到14 MP1 操作手册
  13. 《读书的力量》读后感作文4000字
  14. 读《创业36条军规》(三)学先进 傍大款 走正道
  15. 手机 SMS PDU 格式参考手册
  16. 【Python】Pandas读取tsv文件
  17. 蒲公英服务器搭建小程序,uniapp 小程序打包发布
  18. 基于SPI协议的Flash驱动控制-数据普通读操作
  19. 菊风云 | 音视频社交崛起的背后
  20. anaconda python3.6版本_Anaconda Python V3.6 官方版

热门文章

  1. Java中整数常量池的概念
  2. 流媒体之MP4码流解析。
  3. 苹果核”乔布斯不为人知的九件事
  4. 《社交网络》里的评分公式——ELO排名系统
  5. springboot文件上床大小设置
  6. stm32步进电机控制教程
  7. 开发框架的使用和推广PPT模板
  8. matlab悬架参数优化,Matlab越野车的悬架优化设计+CAD图纸
  9. linux安装i219网卡驱动下载,Linux redhat 6.5 安装网卡I219-LM 驱动
  10. 滴答清单 TickTick for Mac(待办事项清单)