HDU5015~Number Sequence(位运算)
来源:互联网 发布:无糖蛋糕 知乎 编辑:程序博客网 时间:2024/06/06 03:19
Number Sequence
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2516 Accepted Submission(s): 1010
Special Judge
Problem Description
There is a special number sequence which has n+1 integers. For each number in sequence, we have two rules:
● ai ∈ [0,n]
● ai ≠ aj( i ≠ j )
For sequence a and sequence b, the integrating degree t is defined as follows(“⊕” denotes exclusive or):
t = (a0 ⊕ b0) + (a1 ⊕ b1) +···+ (an ⊕ bn)
(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.
● ai ∈ [0,n]
● ai ≠ aj( i ≠ j )
For sequence a and sequence b, the integrating degree t is defined as follows(“⊕” denotes exclusive or):
(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 ≤ 105), The second line contains a0,a1,a2,...,an.
For each case, the first line contains an integer n(1 ≤ n ≤ 105), The second line contains a0,a1,a2,...,an.
Output
For each case, output two lines.The first line contains the maximum integrating degree t. The second line contains n+1 integers b0,b1,b2,...,bn. There is exactly one space between bi and bi+1(0 ≤ i ≤ n - 1). Don’t ouput any spaces after bn.
Sample Input
42 0 1 4 3
Sample Output
201 0 2 3 4
Source
2014 ACM/ICPC Asia Regional Xi'an Online
Recommend
hujie
#include<stdio.h>#include<string.h>#include<math.h>typedef long long ll;using namespace std;ll a[100005];ll b[100005];int main(){ ll n; while(~scanf("%lld",&n)) { memset(b,-1,sizeof(b)); for(int i=0;i<=n;i++) scanf("%lld",&a[i]); ll ans=0,p; for(int i=n;i>=0;i--) { p=0; if(b[i]==-1) { for(int j=0;(1<<j)<i;j++) if((i&(1<<j))==0) p+=(1<<j); b[p]=i; b[i]=p; ans+=(i^p)*2; } } printf("%lld\n",ans); for(int i=0;i<=n;i++) { if(i==0) printf("%lld",b[a[i]]); else printf(" %lld",b[a[i]]); } printf("\n"); }}
0 0
- HDU5015~Number Sequence(位运算)
- HDU - 5014 Number Sequence(贪心+位运算)
- hdu 5014 Number Sequence 位运算+规律
- HDU5014 Number Sequence(二进制,位运算)
- hdu5014 Number Sequence(异或运算)
- hdu5014Number Sequence 位运算
- LeetCode 476 Number Complement(位运算)
- XTU 1192 Number(位运算)
- Leetcode 位运算 Single Number
- LeetCode【位运算】:Single Number
- (leetcode)位运算 Number Complement
- hdu5015(矩阵优化)
- HDU5015
- hdu 3006 The Number of set(位运算)
- Leetcode Number of 1 Bits(位运算)
- LeetCode oj 136. Single Number (位运算)
- LeetCode oj 260. Single Number III (位运算)
- Leetcode-位运算-137. Single Number II(坑未填)
- LintCode : 删除链表中的重复元素
- MyBatis实现单表增删改查(CURD)--属性名与字段名不一致问题
- 手机登录页面(记住密码)
- (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on d
- tableau汇总数据排序(正常不能排序)
- HDU5015~Number Sequence(位运算)
- 三分钟从零单排gulp-less配置
- openssh-server的访问练习
- docker 学习
- NSDocumentDirectory NSDocumentationDirectory 的区别
- Linux进程间通信——使用匿名管道
- 论文学习:深度循环神经网络用于时间序列预测
- 欢迎使用CSDN-markdown编辑器
- 分类的IP地址