Number Sequence HDU
来源:互联网 发布:从底层看java中的接口 编辑:程序博客网 时间:2024/06/07 05:11
There is a special number sequence which has n+1 integers. For each number in sequence, we have two rules:
● a i ∈ 0,n0,n
● a i ≠ a j( i ≠ j )
For sequence a and sequence b, the integrating degree t is defined as follows(“�” denotes exclusive or):
t = (a 0 � b 0) + (a 1 � b 1) +・・・+ (a n � b n)
(sequence B should also satisfy the rules described above)
Now give you a number n and the sequence a. You should calculate the maximum integrating degree t and print the sequence b.
Input
There are multiple test cases. Please process till EOF.
For each case, the first line contains an integer n(1 ≤ n ≤ 10 5), The second line contains a 0,a 1,a 2,…,a n.
Output
For each case, output two lines.The first line contains the maximum integrating degree t. The second line contains n+1 integers b 0,b 1,b 2,…,b n. There is exactly one space between b i and b i+1 (0 ≤ i ≤ n - 1). Don’t ouput any spaces after b n.
Sample Input
4
2 0 1 4 3
Sample Output
20
1 0 2 3 4
#include<map>#include<set>#include<queue>#include<stack>#include<vector>#include<math.h>#include<cstdio>#include<sstream>#include<numeric>//STL数值算法头文件#include<stdlib.h>#include <ctype.h>#include<string.h>#include<iostream>#include<algorithm>#include<functional>//模板类头文件using namespace std;typedef long long ll;const int maxn=110000;const int INF=0x3f3f3f3f;ll a[maxn];ll d[maxn];int main(){ ll n; while(~scanf("%I64d",&n)) { for(ll i=0; i<=n; i++) scanf("%I64d",&a[i]); memset(d,-1,sizeof(d)); ll ans=0; for(ll i=n; i>=0; i--) { ll t=0; if(d[i]==-1) { for(ll j=0;; j++) { if(!(i&(1<<j))) t+=(1<<j); if(t>=i) { t-=(1<<j); break; } } ans+=(i^t)*2; d[i]=t; d[t]=i; } } printf("%I64d\n",ans); for(ll i=0; i<=n; i++) printf(i==n?"%I64d\n":"%I64d ",d[a[i]]); } return 0;}
- hdu 1711 Number Sequence
- hdu 1711 Number Sequence
- HDU 1005 Number Sequence
- hdu 1711 Number Sequence
- hdu 1005 Number Sequence
- Hdu-1711 Number Sequence
- HDU 1005 Number Sequence
- hdu 1711 Number Sequence
- HDU 1711 Number Sequence
- HDU 1711 Number Sequence
- hdu 1711 Number Sequence
- hdu 1005 Number Sequence
- HDU-1711-Number Sequence
- hdu 4390 Number Sequence
- HDU 1005 Number Sequence
- HDU 1005 Number Sequence
- hdu 1711 Number Sequence
- HDU 1005 Number Sequence
- 在Android的控件布局中,有一个奇葩的 layout_weight 属性
- POJ 1088 递归+记忆化搜索
- caffe训练GPU配置
- cookie是怎么被盗的
- 递归递推总结
- Number Sequence HDU
- 使用一个消息队列作为计数信号量
- 接口中的两次请求
- C++ 牛客网做题笔记【900题总结】
- [BZOJ2534]Uva10829L-gap字符串(后缀数组+st表)
- 骄傲的代价(大数处理)
- Android 6.0+ 动态权限 一种清爽的封装过程(以及多个权限的处理)
- 购物车
- Android 中右上角菜单创建(Menu)