Powered Addition

题意

给出n个数字,现在你可以在第x秒,选择任意数量的下标,让这些位置上的数加上\(2^{x-1}\),问最快需要几秒使得数列变成一个非递减的序列。

思路

让求x的最小值,转换一下。

假设第i个数字在x秒内加的权值为val[i],x的最小值即让val[i]最大值最小。

如何最小,如果a[i-1]>a[i],就让a[i]=a[i-1],计算它们差值的二进制最高位,取最大值。

代码

//#include<bits/stdc++.h>
#include<vector>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<string>
#include<math.h>
#include<queue>
#include<map>
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e6+10;
const int mod=1e9+7;
const ll inf=0x3f3f3f3f3f3f3f3f;
const double eps=1e-14; ll arr[N];
int main()
{
ll T;
scanf("%lld",&T);
while(T--)
{
ll n;
scanf("%lld",&n);
for(ll i=1;i<=n;i++)
scanf("%lld",&arr[i]);
ll ans=0,maxn=-inf;
for(ll i=1;i<=n;i++)
{
ll cnt=0;
if(arr[i]<maxn)
{
ll dis=maxn-arr[i];
while(dis)
{
dis/=2;
cnt++;
}
}
maxn=max(maxn,arr[i]);
ans=max(ans,cnt);
}
printf("%lld\n",ans);
}
return 0;
}

博客

最新文章

  1. PHP探针
  2. 浅谈Json和jsonp
  3. ubuntu10.04+win7双系统,重装win7后,恢复grub引导菜单以及命令行引导linux
  4. axure rp extension的下载
  5. win10系统更新补丁时进度条一直卡在0%不动的解决方案
  6. jboss内存管理
  7. 关于C#中Thread.Join()的一点理解
  8. usb开发笔记
  9. HDU 1071 - The area
  10. BZOJ 3931: [CQOI2015]网络吞吐量( 最短路 + 最大流 )
  11. css控制table的td宽度
  12. 在Ubuntu下如何切换到超级用户
  13. k-近邻(KNN)算法改进约会网站的配对效果[Python]
  14. dubbo本地服务化实现(dubbo三)
  15. 【搬运工】 Can&#39;t connect to local MySQL server through socket &#39;/var/lib/mysql/mysql.sock&#39;
  16. 表达式语言引擎:Apache Commons JEXL 2.1 发布
  17. golang注意问题
  18. tmux的使用
  19. HDU - 1712 - ACboy needs your help 【分组背包】
  20. 雇佣K个工人的最小费用 Minimum Cost to Hire K Workers

热门文章

  1. 利用浏览器的console篡改cookie
  2. Android | 教你如何在安卓上实现二代身份证识别,一键实名认证
  3. Complete the Sequence HDU - 1121
  4. Postman:Pre-request Script
  5. hadoop 伪分布配置
  6. wget下载整个网站---比较实用--比如抓取Smarty的document
  7. (第四篇)Linux命令初识之常用系统管理命令
  8. JAVA企业级应用TOMCAT实战(二)
  9. 用libevent写的海康摄像头rtsp客户端
  10. HDU1873 看病要排队【模拟+优先队列】