hdu 5014 贪心+位处理
2015-02-11 19:21
375 查看
http://acm.hdu.edu.cn/showproblem.php?pid=5014
题意略。
分析: 通过发现规律贪心处理即可,从n开始反向遍历到0,假设与数i匹配的是 Xi;
那么i^Xi的二进制位一定全1,并且二进制位数等于i的二进制位数
题意略。
分析: 通过发现规律贪心处理即可,从n开始反向遍历到0,假设与数i匹配的是 Xi;
那么i^Xi的二进制位一定全1,并且二进制位数等于i的二进制位数
#include <iostream> #include <stdio.h> #include <string> #include <string.h> #include <algorithm> const int N=1e5+100; using namespace std; typedef long long ll; int a ; int b ; int main() { int n; while(scanf("%d",&n)!=EOF) { memset(b,-1,sizeof(b)); for(int i=0;i<=n;i++)scanf("%d",&a[i]); ll sum=0; for(int i=n;i>=0;i--) { if(b[i]!=-1)continue; int tmp=i,ans=0,cnt=1; while(tmp) { if((tmp&1)==0)ans+=cnt; tmp>>=1; cnt*=2; } sum+=2*(i^ans); b[i]=ans; b[ans]=i; } printf("%I64d\n",sum); for(int i=0;i<=n;i++) { if(i==0)printf("%d",b[a[i]]); else printf(" %d",b[a[i]]); } printf("\n"); } return 0; }
相关文章推荐
- HDU-#5014 Number Sequence(贪心+构造)
- hdu 5014 Number Sequence(贪心)
- 贪心 HDU 5014
- HDU - 4726 Kia's Calculation (贪心 数字加和错误运算处理)
- HDU - 4726 Kia's Calculation (贪心 数字加和错误运算处理)
- HDU 5014 Number Sequence 贪心 2014 ACM/ICPC Asia Regional Xi'an Online
- HDU - 4726 Kia's Calculation (贪心 数字加和错误运算处理)
- 贪心 HDU 5014
- 贪心 HDU 5014
- HDU - 4726 Kia's Calculation (贪心 数字加和错误运算处理)
- HDU 5014 Number Sequence(贪心)
- ACM学习历程——HDU 5014 Number Sequence (贪心)(2014西安网赛)
- HDU 5014 贪心
- 贪心 HDU 5014
- hdu 5014 贪心
- hdu 5014 number sequence 贪心
- HDU - 5014 Number Sequence(贪心+位运算)
- HDU 2570 迷瘴(贪心 过程处理不好会导致精度问题)
- 贪心 HDU 5014
- HDU - 4726 Kia's Calculation (贪心 数字加和错误运算处理)