设为首页 加入收藏

TOP

hdu 5014 贪心+位处理
2015-07-20 17:17:54 来源: 作者: 【 】 浏览:3
Tags:hdu 5014 贪心 +位 处理

?
题意略。
分析: 通过发现规律贪心处理即可,从n开始反向遍历到0,假设与数i匹配的是 Xi;
那么i^Xi的二进制位一定全1,并且二进制位数等于i的二进制位数

#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         const int N=1e5+100; using namespace std; typedef long long ll; int a[N]; int b[N]; 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 ,sum); for(int i=0;i<=n;i++) { if(i==0)printf(%d,b[a[i]]); else printf( %d,b[a[i]]); } printf( ); } return 0; } 
       
      
     
    
   
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Leetcode:Insertion Sort List 下一篇Effective C++读书笔记(条款24-29)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解c语言指针和 (2025-12-27 01:19:11)
·为什么C标准库没有链 (2025-12-27 01:19:08)
·玩转C语言和数据结构 (2025-12-27 01:19:05)
·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)