传送门

题意:

给你n个数,构造一组x,y,将这n个数划分为小于等于x,大于等于y以及大于x小于y的数三个区间,我们可以往每个区间添加数,使得每个区间的数为2的幂次,输出添加数的最小个数。

思路:

设num[x]为1-x中数的个数,我们枚举小于等于x的区间需要添加的2的幂次和大于x且小于y的2的幂次,那么剩下的部分自然就是大于等于y的数字个数,枚举求最小添加数。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
int a[200010],vis[200010],vis2[200010];
int Pow[30];
int FIND(int l,int r,int aim)
{int pre = a[l-1];while(l < r){int mid = l+r+1>>1;if(a[mid]-pre > aim)r = mid-1;else l = mid;}return l;
}
int QPOW(int aa,int b)
{int res = 1;while(b){if(b&1)res = res*aa;aa*=aa;b>>=1;}return res;
}
int main()
{int t;cin>>t;while(t--){ int n;scanf("%d",&n);int maxx = 0;for(int i = 1; i <= n; i++){scanf("%d",&a[i]);maxx = max(maxx,a[i]);vis[a[i]]++;}for(int i = 1; i <= n+3; i++){a[i] = a[i-1]+vis[i];}int ans = 1e9;for(int i = 0; i <= 18; i++)Pow[i] = QPOW(2,i);for(int i = 0; i <= 18; i++){for(int j = 0; j <= 18; j++){int l = FIND(0,n,QPOW(2,i));int mid = FIND(l+1,n,QPOW(2,j));int r = max(mid+1,n);int k = lower_bound(Pow,Pow+19,a[r]-a[mid])-Pow;int now_ans = (int)QPOW(2,i)-a[l]+(int)QPOW(2,j)-(a[mid]-a[l])+Pow[k]-(a[r]-a[mid]);if(((int)QPOW(2,i)-a[l]<0) || ((int)QPOW(2,j)-(a[mid]-a[l])<0) || (Pow[k]-(a[r]-a[mid])<0))continue;ans = min(ans,now_ans);}}printf("%d\n",ans);for(int i = 1; i <= n+3; i++)a[i] =vis[i]= 0;}
}

D. Martial Arts Tournament相关推荐

  1. Mixed Reality Martial Arts Training using Real-time 3D Human Pose Forecasting with a RGB Camera(翻译二)

    Implementation 本系统主要由两部分组成:单幅图像的三维姿态预测和虚拟现实中的模型拟合与碰撞检测.如图2所示,姿态预测由三个模块组成:二维姿态估计.二维姿态预测和三维姿态恢复.这三个模块在 ...

  2. android18lazuli,Android 18

    "Whoever owns these clothes should have their optic sensors adjusted. They are obviously malfun ...

  3. [转]体育运动比赛英语

    Tennis 网球 Athletics 竞技 Swimming 游泳 Individual Sports 体育项目 Football 足球 Games and Competitions 球类运动 Ba ...

  4. 被拒绝100天 Rejection Therapy 100 Days

    [TED演讲]在被拒绝的100天中,我学到了什么(T君译)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 下面是他的100天挑战内容,来自:Jia Jiang - YouTube Ask Jia ...

  5. 一些今天看到的好句子

    1. 记住该记住的,忘记该忘记的.改变能改变的,接受不能改变的 Remember what should be remembered, and forget what should be forgot ...

  6. 使用Python自己实现简单的数据可视化

    只使用Python的random库,将已有数据生成HTML格式的标签云.思路就是根据同一单词出现的次数多少,生成不同大小不同颜色单词的数据的视图. 比如以下格式的多条数据: 1 Gaming 1 Sk ...

  7. 《Deep Learning With Python second edition》英文版读书笔记:第十一章DL for text: NLP、Transformer、Seq2Seq

    文章目录 第十一章:Deep learning for text 11.1 Natural language processing: The bird's eye view 11.2 Preparin ...

  8. 一件代发系统php网站源码_靠谱礼品代发平台网站一件代发(0.5元)

    小礼品一件代发-礼品代发平台网站(安全可靠)小礼品一件代发-礼品代发平台网站(安全可靠) 阁下所问,我却是不知道该如何回答了,阁下要不请入我大殿,由我苯教好生招待于阁下如何?"那僧人见钟文回 ...

  9. 4 Skills that will Dramatically Increase Your Chance of Thriving as a Multipotentialite2017-12-09

    What does it takes to thrive as a multipotentialite? Not survive. Not accept. THRIVE. 4个技能将极大地提升你作为多 ...

最新文章

  1. hypervisor简介
  2. UML中的stereotype
  3. ls命令显示结果图解
  4. 如何使用ROS查找rgbdslam代码包框架的输入
  5. 利用ajax赋值,jquery利用async在ajax中给全局变量赋值
  6. 微信小程序UI组件、开发框架、实用库...
  7. 使用Flash Builder 4.5进行多平台游戏开发
  8. Luogu P5008 逛庭院
  9. 日期时间格式与时间戳互转
  10. 《软件测试》实验一:测试入门
  11. H3CTE讲师分享H3C认证培训实验9 IP基础
  12. Bpel简介及实例总结
  13. 软件 规则引擎_如何设计软件规则引擎
  14. 阿里巴巴国际站如何查看优秀同行产品关键词方法?
  15. 23岁的Python,这些年在编程语言排行榜上直线上升的原因是什么?很多人都不解
  16. 7年加工作经验的程序员,从大厂跳槽出来,遭遇了什么?
  17. iOS开发——keychain的使用
  18. BZOJ2456mode
  19. matlab中的strfind和findstr函数
  20. 【积跬步以至千里】App Crashed - WriteMiniDump

热门文章

  1. Python 实现 周志华 《机器学习》 BP算法
  2. 乐高大颗粒作品15:移动篮球框
  3. BZOJ 1257 [CQOI2007]余数之和sum 题解
  4. Mac下将文件复制到移动硬盘
  5. CES 2018前瞻:家居/音箱/AR/汽车都有什么新玩法 | 关注
  6. 2020宁波市多校赛训练biu~
  7. k-means(k均值聚类)算法介绍及实现(c++)
  8. webService公共开放接口大全
  9. C语言中如何输出一些特殊的字符
  10. 实现童年宝可梦,教你用Python画一只属于自己的皮卡丘