传送门

题意:给一个序列,让改变序列的顺序,使其经过一个运算,最后值最大。
分析:本题考就考这个运算,这个运算就是二进制,所以考的就是二进制。分析这个运算:(以下摘自tql tql tql tql)
/-------------------------------------------------------------------------------------------/
我们看这样一个操作他代表着什么?

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

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

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

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

可以模拟一下这个样例,9 5 9,把5摆到最前面上是最优解。
/---------------------------------------------------------------------------------------------/
也就是说,这个运算f(a,b)的结果是:将a,b转化为二进制,a为1,b为0的位是1,其他位是0。

代码:

#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<queue>
#include<deque>
#define sx(x)   scanf("%d",&x)
using namespace std;int a[100000+100];int num[50];
int main()
{int n;sx(n);memset(num,0,sizeof(num));int cnt=-1;for(int i=1;i<=n;i++){sx(a[i]);int x=a[i];int tmp=0;while(x)                        //将x转化成二进制,统计每个数每位1的数目{if(x&1)num[tmp++]+=1;elsenum[tmp++]+=0;x>>=1;}cnt=max(cnt,tmp);           //最大位数}int pos=-1;                     //右移pos位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]);cout<<endl;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]);}cout<<endl;return 0;
}

补充,把一个数的二进制的各个位都求出来:

while(x)                     //将x转化成二进制,统计每个数每位1的数目{if(x&1)                       //and  最后一位与1进行andnum[tmp++]=1;elsenum[tmp++]=0;x>>=1;                     //右移}

codeforces 1299A Anu Has a Function相关推荐

  1. Codeforces——C. Anu Has a Function

    Codeforces--C. Anu Has a Function Anu has created her own function f: f(x,y)=(x|y)−y where | denotes ...

  2. CodeForces 1300C Anu Has a Function

    解题思路 只有在某一位上有唯一的1才会对答案做出贡献,我们把所有的数字转化成二进制,然后遍历每一位上的1,剩下的直接随意输出就ok #include <iostream> #include ...

  3. 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 给定一个长 ...

  4. 【Codeforces Round#618 (Div. 2)】C. Anu Has a Function 题解

    题目链接:C. Anu Has a Function 题目 Anu has created her own function f: f(x,y)=(x|y)−y where | denotes the ...

  5. 寒假刷题13: Anu Has a Function Codeforces Round #618 (Div. 2) C

    题目链接: Anu Has a Function 题目解析: 观察函数f(x,y)定义:(x|y)-y 即 取出来x里是1但是y里不是1的地方 也就是 x&(~y) (也可以列真值表) 因此题 ...

  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. Codeforces Round #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 ...

  8. AC. Anu Has a Function

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

  9. 2月9号cf,c题 Anu Has a Function

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

最新文章

  1. 干货丨有关机器学习每个人都应该了解的东西
  2. 为Nginx制作404 403 500等错误页面
  3. STM32的抢占优先级和响应优先级
  4. 重新想象 Windows 8 Store Apps (10) - 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom...
  5. kepware怎么读modbus/tcp数据_多机房多活架构,究竟怎么玩?
  6. java调用js匿名函数参数,js匿名函数作为函数参数详解
  7. Intel 64/x86_64/x86/IA-32处理器标志寄存器详解(5) - 32位EFLAGS - 系统标志
  8. 如何防止线程死锁java_Java 并发编程:如何防止在线程阻塞与唤醒时死锁
  9. 漫画:为什么生僻字计算机上打不出来,或者打出来也无法显示呢?
  10. UVA10523 Very Easy !!!题解
  11. 再记AE与AO的区别与联系
  12. ContextCapture(CC)/Smart3D集群搭建笔记
  13. JS 绘制 Cardinal 样条曲线
  14. ONOS 南向抽象层分析
  15. django系统发送邮件到用户邮箱,完成验证
  16. 推荐系统——Neural Collaborative Filtering(NMF)
  17. 16 张图解 | 淘宝 10年架构演进
  18. 雅利安人覆灭了世界三大文明,为何单单在商朝被斩首两万?
  19. 证明调和级数发散的方法
  20. python计算FID

热门文章

  1. 智能创意拼图,汇集精彩瞬间
  2. i5 12600kf参数i5 12600kf功耗
  3. 基于PaddlePaddle2.0验证码端到端的识别
  4. python人狗大战游戏_082 实例 人狗大战
  5. 第三章:课后习题答案-SAS程序部分
  6. PHP+FlashPaper文库系统方案简析
  7. php对plc的TCP通信,西门子S7-1200PLC之间TCP通信实例步骤
  8. 如何将系统变量中的Path变量值由一整行变的条理清晰
  9. STM32CubeMX——GPIO配置
  10. 布隆过滤器原理及实践