D. Martial Arts Tournament
传送门
题意:
给你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相关推荐
- Mixed Reality Martial Arts Training using Real-time 3D Human Pose Forecasting with a RGB Camera(翻译二)
Implementation 本系统主要由两部分组成:单幅图像的三维姿态预测和虚拟现实中的模型拟合与碰撞检测.如图2所示,姿态预测由三个模块组成:二维姿态估计.二维姿态预测和三维姿态恢复.这三个模块在 ...
- android18lazuli,Android 18
"Whoever owns these clothes should have their optic sensors adjusted. They are obviously malfun ...
- [转]体育运动比赛英语
Tennis 网球 Athletics 竞技 Swimming 游泳 Individual Sports 体育项目 Football 足球 Games and Competitions 球类运动 Ba ...
- 被拒绝100天 Rejection Therapy 100 Days
[TED演讲]在被拒绝的100天中,我学到了什么(T君译)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 下面是他的100天挑战内容,来自:Jia Jiang - YouTube Ask Jia ...
- 一些今天看到的好句子
1. 记住该记住的,忘记该忘记的.改变能改变的,接受不能改变的 Remember what should be remembered, and forget what should be forgot ...
- 使用Python自己实现简单的数据可视化
只使用Python的random库,将已有数据生成HTML格式的标签云.思路就是根据同一单词出现的次数多少,生成不同大小不同颜色单词的数据的视图. 比如以下格式的多条数据: 1 Gaming 1 Sk ...
- 《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 ...
- 一件代发系统php网站源码_靠谱礼品代发平台网站一件代发(0.5元)
小礼品一件代发-礼品代发平台网站(安全可靠)小礼品一件代发-礼品代发平台网站(安全可靠) 阁下所问,我却是不知道该如何回答了,阁下要不请入我大殿,由我苯教好生招待于阁下如何?"那僧人见钟文回 ...
- 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个技能将极大地提升你作为多 ...
最新文章
- hypervisor简介
- UML中的stereotype
- ls命令显示结果图解
- 如何使用ROS查找rgbdslam代码包框架的输入
- 利用ajax赋值,jquery利用async在ajax中给全局变量赋值
- 微信小程序UI组件、开发框架、实用库...
- 使用Flash Builder 4.5进行多平台游戏开发
- Luogu P5008 逛庭院
- 日期时间格式与时间戳互转
- 《软件测试》实验一:测试入门
- H3CTE讲师分享H3C认证培训实验9 IP基础
- Bpel简介及实例总结
- 软件 规则引擎_如何设计软件规则引擎
- 阿里巴巴国际站如何查看优秀同行产品关键词方法?
- 23岁的Python,这些年在编程语言排行榜上直线上升的原因是什么?很多人都不解
- 7年加工作经验的程序员,从大厂跳槽出来,遭遇了什么?
- iOS开发——keychain的使用
- BZOJ2456mode
- matlab中的strfind和findstr函数
- 【积跬步以至千里】App Crashed - WriteMiniDump