题意:
     给你一个序列a,他有n+1个数,每个数的范围是ai >= 0 && a[i] <= n,同时任意两个数字都是不相同的,就是ai != aj (i!=j),然后让你构造一个序列b,这个序列的要求与a序列一样,最后要求构造的b是使 t = (a0 ^ b0) + (a1 ^ b1) + ...+ (an ^ bn)最大。

思路:

      一开始想的太简单了,因为题目要求的是每个数字都只能用一次,一开始我的想法是根据n的奇偶,来单独处理,处理的时候也是根据每个ai的奇偶来处理的,结果wa了,现在来说下正确的解法吧,这个题目我用的正确解法有点贪心的意思,我们每次先找到一个最大的2^k的数字,这个数字要小于等于n,从它开始枚举,往两边扩,如果不能扩了就找到当前没有被找出来的最大的那个2^k继续扩,不怎么好解释,自己在纸上多写几个连续的二进制数,然后模拟下很容易懂的,这里面有一个很容易让人怀疑的地方就是可能大数的那个方向会有剩余,其实不用担心这个,不可能有剩余,因为如果以某一个数为中心往两侧扩的话,只要前面扩到头了,也就是到1了,那么后面一定是mark完的了,因为扩到1相当于自己*2了,也就是2^(k+1)了,要是没有看懂什么意思,那么就自己找几个连续的二进制数模拟下就行了。


#include<stdio.h>
#include<string.h>
#include<stack>#define N 110000

using namespace std;int mark[N];
int num[N] ,Ans[N];int main ()
{int n ,i ,tmp;while(~scanf("%d" ,&n)){for(i = 0 ;i <= n ;i ++)scanf("%d" ,&num[i]);stack<int>my_sk;tmp = 1;while(1){my_sk.push(tmp);tmp <<= 1;if(tmp > n) break;}memset(mark ,0 ,sizeof(mark));memset(Ans ,0 ,sizeof(Ans));while(!my_sk.empty()){int L = my_sk.top() - 1;int R = L + 1;my_sk.pop();while(1){if(L < 0 || R > n || mark[L] || mark[R])break;mark[L] = mark[R] = 1;Ans[L] = R ,Ans[R] = L;L -- ,R ++;}}__int64 ans = 0;for(i = 0 ;i <= n ;i ++)ans += (__int64)(num[i] ^ Ans[num[i]]);   printf("%I64d\n" ,ans);for(i = 0 ;i <= n ;i ++)if(i == n) printf("%d\n" ,Ans[num[i]]);else printf("%d " ,Ans[num[i]]);}return 0;
}

hdu5014 构造b数列使得t最大(小想法)相关推荐

  1. hdu3006 状态压缩+位运算+hash(小想法题)

    题意:        给了n个集合,问你这n个集合可以组合出多少种集合,可以自己,也可以两个,也可以三个....也可以n个集合组在一起. 思路:       是个小想法题目,要用到二进制压缩,位运算, ...

  2. 对于毕业论文的一点小想法

    这两天看了几篇学位论文,有一些小想法. 基于中草药语义网的自动问答系统的研究与实现,基于语义网的旅游业自动问答系统的研究,主要用到自然语言处理和机器学习相关知识,专注小领域的问答系统.目前我主要想做的 ...

  3. 软件测试工程师应该具备的素质---菜鸟的小想法

    菜鸟的测试之路 如何做好一名软件测试人员? 一名好的测试工程师应该具备什么哪些素质? 这两个问题是每个测试员经常需要面对的问题,也是测试员经常考虑的问题,一名测试员最基本的素质是什么呢? 一个菜鸟的小 ...

  4. (政府 + 物业 + 居民 + 第三方)联合打造智慧社区的小想法

    首先我们要搞清楚一个问题,什么是智慧社区? 官方给出的解释是:智慧社区是指充分利用物联网.云计算.移动互联网等新一代信息技术的集成应用,为社区居民提供一个安全.舒适.便利的现代化.智慧化生活环境,从而 ...

  5. hdu 4549 M斐波那契数列(费马小定理 + 二分快速幂 + 矩阵快速幂)

    M斐波那契数列                                                                           Time Limit: 3000/1 ...

  6. python求数列的积_python小游戏学习笔记4-2(列表【】,数列矩阵排列)

    x数值的单列写法: xlist = [1,2,3,4,5] for x in xlist: print(x) 关于len(长度)的用法:(结果为:5)(lens的作用就是把list 化为单个数字(内容 ...

  7. 提高代码改造过程的小想法

    最近几天一直在思考一个这样的问题,怎么样才能让制造工作快速高效的完成,并尽可能减少bug的存在.初始想法是源于自己的这次失败,并不简单的是失误.一大片的进度延迟是谁也不想看到的,但也不是任何人都能在规 ...

  8. 我的一些小想法(聊以一笑……)

    1.用正背面.左右面.上下面图片,6张图片生成事物三维构图.可以用来添加到聊天程序的对方实体.娱乐软件来为使用者生成自己的三维 小动画.电影--等. 2.整合所有搜索引擎的网站,各个搜索引擎的头几条作 ...

  9. 小想法 | 开源一个自己的Python小项目「Park at ease」停车场管理系统

    Park at ease 停车场管理系统 基于Python实现 Park Management System Based on Python- print('Hello, this is Park_a ...

最新文章

  1. Oracle总结第二篇【视图、索引、事务、用户权限、批量操作】
  2. 深入出不来nodejs源码-编译启动
  3. Python Django 生成随机字符串UUID的使用示例
  4. SAP CAP 项目 cds watch 生成的 index.html 的模板位置和权限控制
  5. 【线段树】矮人排队(jzoj(gz) 3236)
  6. python多进程写入mysql_Python实现 多进程导入CSV数据到 MySQL
  7. 微信无连接服务器1.104,微信成语猜猜看太子少师答案汇总 太子少师1-104关攻略...
  8. 应用市场中的应用转让
  9. 微软自带报ocienvcreate失败_微软推出的免费神器,治好了我的拖延症!
  10. 如何在linux mysql_如何在linux下安装mysql
  11. 正确清理binlog日志
  12. linux/ubuntu中制作deb安装包
  13. 洛谷 P2578 [ZJOI2005]九数码游戏【bfs+康托展开】
  14. 简单将xml数据转换为txt数据
  15. 使用PIL和OpenCV在PC上模拟动画OLED / LCD显示器
  16. bzoj1597 土地购买
  17. html caption属性的值,然后在属性面板中更改控件的Caption属性值
  18. 理解Python中的RingBuffer环形缓冲区
  19. 小红书 x DorisDB:实现数据服务平台统一化,简化数据链路,提升高并发极速查询能力...
  20. 2022年正月初七复工通知

热门文章

  1. Ruby已死——必须关注的内存问题
  2. 机房墙面为什么要做保温?该怎么做?
  3. passwd 修改用户密码
  4. 使用jq.lazyload.js,解决设置loading图片的问题
  5. SQL删除重复的记录(只保留一条)
  6. 在代码中向ReportViewer动态添加数据源
  7. Microsoft Speech SDK 编程入门
  8. [转]什么是CMMI?
  9. 黑马在线教育项目---15-16、datatables插件
  10. jQuery.extend 函数使用详解