codeforces 1299A Anu Has a Function
传送门
题意:给一个序列,让改变序列的顺序,使其经过一个运算,最后值最大。
分析:本题考就考这个运算,这个运算就是二进制,所以考的就是二进制。分析这个运算:(以下摘自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相关推荐
- 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 ...
- CodeForces 1300C Anu Has a Function
解题思路 只有在某一位上有唯一的1才会对答案做出贡献,我们把所有的数字转化成二进制,然后遍历每一位上的1,剩下的直接随意输出就ok #include <iostream> #include ...
- 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 给定一个长 ...
- 【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 ...
- 寒假刷题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) (也可以列真值表) 因此题 ...
- 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 ...
- 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 ...
- AC. Anu Has a Function
A&C. Anu Has a Function Codeforces Round #618 (Div. 1&2) 题目链接 关键词 greedy math *1500 位运算 解题思路 ...
- 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 ...
最新文章
- 干货丨有关机器学习每个人都应该了解的东西
- 为Nginx制作404 403 500等错误页面
- STM32的抢占优先级和响应优先级
- 重新想象 Windows 8 Store Apps (10) - 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom...
- kepware怎么读modbus/tcp数据_多机房多活架构,究竟怎么玩?
- java调用js匿名函数参数,js匿名函数作为函数参数详解
- Intel 64/x86_64/x86/IA-32处理器标志寄存器详解(5) - 32位EFLAGS - 系统标志
- 如何防止线程死锁java_Java 并发编程:如何防止在线程阻塞与唤醒时死锁
- 漫画:为什么生僻字计算机上打不出来,或者打出来也无法显示呢?
- UVA10523 Very Easy !!!题解
- 再记AE与AO的区别与联系
- ContextCapture(CC)/Smart3D集群搭建笔记
- JS 绘制 Cardinal 样条曲线
- ONOS 南向抽象层分析
- django系统发送邮件到用户邮箱,完成验证
- 推荐系统——Neural Collaborative Filtering(NMF)
- 16 张图解 | 淘宝 10年架构演进
- 雅利安人覆灭了世界三大文明,为何单单在商朝被斩首两万?
- 证明调和级数发散的方法
- python计算FID