hdu 5014——Number Sequence
来源:互联网 发布:手机游戏源码架设教程 编辑:程序博客网 时间:2024/06/16 07:17
题意:求出一个数组,使该数组跟原数组的异或和最大
思路:从把数字从大往小匹配就行了。
参考:http://www.cnblogs.com/xiaxiaosheng/p/3971820.html
代码:
#include<iostream>#include<cstring>#include<cstdio>using namespace std;int n;int a[100005];int b[100005];bool vis[100005];typedef long long ll;int getn(int x){ int ret=0; while(x) { x>>=1; ret++; } return ret;}int main(){// freopen("data.txt","r",stdin); while(scanf("%d",&n)!=EOF) { for(int i=0;i<=n;++i) { scanf("%d",&a[i]); } memset(vis,0,sizeof(vis)); // cout<<"zzz"<<endl; for(int i=n;i>=0;--i) { if(vis[i])continue; int top=getn(i); int ans=((1<<top)-1)^i; b[i]=ans; b[ans]=i; vis[i]=vis[ans]=1; } ll sum=0; for(int i=0;i<=n;++i) { sum+=(ll)(a[i]^b[a[i]]); } printf("%I64d\n",sum); printf("%d",b[a[0]]); for(int i=1;i<=n;++i) { printf(" %d",b[a[i]]); } puts(""); } return 0;}
0 0
- HDU——5014 Number Sequence
- hdu 5014——Number Sequence
- hdu—1005 Number Sequence
- HDU 1005 — Number Sequence
- HDU 5014 Number Sequence
- HDU - 5014 Number Sequence
- HDU-5014-Number Sequence
- HDU 5014 Number Sequence
- HDU -- 5014 Number Sequence
- hdu 5014 Number Sequence
- HDU 5014-Number Sequence
- HDU 5014 Number Sequence
- hdu 5014 Number Sequence
- HDU -- 5014 Number Sequence
- HDU 5014Number Sequence
- Number Sequence(hdu 5014)
- hdu 5014 Number Sequence
- HDU——1711 Number Sequence
- java点击按钮的时,打开另一个界面,原界面消失的方法
- IDEA 打包 jar
- more
- freetype->example1.c代码的注释
- .NET基于comet服务器推送技术(web实时聊天)
- hdu 5014——Number Sequence
- 关于QQ刷钻,点图标的。
- IOS Table中Cell的重用reuse机制分析
- IBM 技术文档:Spark, 快速数据分析的又一选择
- C++基础三剑客—复制构造函数,赋值操作,析构函数
- cat
- 移动MM 支付SDK遇到的问题
- 分枝和合并基础知识介绍
- invalid byte sequence for encoding "UTF8": 0xe99d2c