hdu 5014 Number Sequence 2014 ACM/ICPC Asia Regional Xi'an Online 数论
来源:互联网 发布:mac 10 少女前线 编辑:程序博客网 时间:2024/05/01 11:27
题目链接:hdu 5014
给出一个从0到n的全排列数组a,求一个对应的数组使得,a[i]^b[i]的总和最大,输出总和并输出b数组
要使得异或值最大,就要让每个数的1尽量加进计数中,因此对于每个数a,要找到匹配数b使得两者的异或值为两者的和
从最高位n开始向0找每个数的匹配数,对于数a,若该数尚未匹配,则找数b使得a+b的值为2^x-1,(x为a的二进制位数),最大和即为0~n的总和的两倍
/****************************************************** * File Name: 1008.cpp * Author: kojimai * Creater Time:2014年09月14日 星期日 13时25分56秒******************************************************/#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<iostream>using namespace std;#define FFF 100005int match[FFF];int val[FFF];int a[FFF];void init(){val[1]=1;for(int i = 2;i <= 17; i++){val[i]=(val[i-1]+1)*2-1;}return;}int qfind(int x){int l=1,r=17,mid;while(l<=r){mid=(l+r)/2;if(val[mid]>x){r=mid-1;}elsel=mid+1;}return l;}int main(){int n;init();while(~scanf("%d",&n)){memset(match,-1,sizeof(match));long long all=0;for(int i=0;i<=n;i++){scanf("%d",&a[i]);all+=a[i];}all*=2;int t=qfind(n);for(int i=n;i>=0;i--){if(match[i]==-1){if(i==0){match[0]=0;break;}while(i<=val[t-1])t--;match[i]=val[t]-i;match[val[t]-i]=i;}}cout<<all<<endl;//long long debug=0;for(int i=0;i<=n;i++){//debug+=match[a[i]];if(i==0)printf("%d",match[a[i]]);elseprintf(" %d",match[a[i]]);}cout<<endl;//cout<<"debug = "<<debug<<endl;}return 0;}
0 0
- hdu 5014 Number Sequence 2014 ACM/ICPC Asia Regional Xi'an Online 数论
- HDU 5014 Number Sequence 贪心 2014 ACM/ICPC Asia Regional Xi'an Online
- hdu 5014 Number Sequence 找规律 | 贪心 2014 ACM/ICPC Asia Regional Xi'an Online
- hdu 5014 Number Sequence 2014 ACM/ICPC Asia Regional Xi'an Online
- 2014 ACM/ICPC Asia Regional Xi'an Online 小记
- 2014 ACM/ICPC Asia Regional Xi'an Online
- 2014 ACM/ICPC Asia Regional Xi'an Online(hdu 5007 - hdu 5017)
- hdu 5015 233 Matrix 2014 ACM/ICPC Asia Regional Xi'an Online 矩阵快速幂
- hdu 5012 Dice 2014 ACM/ICPC Asia Regional Xi'an Online bfs
- hdu 1009 233 Matrix 矩阵构造 --2014 ACM/ICPC Asia Regional Xi'an Online
- HDU 5015 233 Matrix / 2014 ACM/ICPC Asia Regional Xi'an Online
- hdu 5008(2014 ACM/ICPC Asia Regional Xi'an Online ) Boring String Problem(后缀数组&二分)
- hdu 5011 Game Nim博弈 2014 ACM/ICPC Asia Regional Xi'an Online
- hdu 5007 Post Robot 水题 2014 ACM/ICPC Asia Regional Xi'an Online
- 2014 ACM/ICPC Asia Regional Xi'an Online 233 Matrix,hdu 5015
- hdu 5012 Dice BFS 2014 ACM/ICPC Asia Regional Xi'an Online
- HDU5014(异或) HDU 5012(BFS)(2014 ACM/ICPC Asia Regional Xi'an Online)题解
- hdu 5009 Paint Pearls 2014 ACM/ICPC Asia Regional Xi'an Online
- C++中引用和指针的区别
- what's the difference between .bush.rc and .bash_profile?
- HDU 5011 Game(西安网络赛E题)
- HDU 5011 Game(Nim博弈)
- hdu 5009 Paint Pearls(dp)
- hdu 5014 Number Sequence 2014 ACM/ICPC Asia Regional Xi'an Online 数论
- 引用与指针
- mac os 获取root/su/sudo权限的方法
- 双向链表(插入,删除,追加,正反向遍历,查找。。。)
- 相册
- 数据结构——二叉树的遍历
- 二叉树——根据遍历结果,画出对应的二叉树
- 流量劫持
- 软件工程(二)需求分析和设计