C - Powered Addition
You have an array a of length n. For every positive integer x you are going to perform the following operation during the x-th second:

Select some distinct indices i1,i2,…,ik which are between 1 and n inclusive, and add 2x−1 to each corresponding position of a. Formally, aij:=aij+2x−1 for j=1,2,…,k. Note that you are allowed to not select any indices at all.
You have to make a nondecreasing as fast as possible. Find the smallest number T such that you can make the array nondecreasing after at most T seconds.

Array a is nondecreasing if and only if a1≤a2≤…≤an.

You have to answer t independent test cases.

Input
The first line contains a single integer t (1≤t≤104) — the number of test cases.

The first line of each test case contains single integer n (1≤n≤105) — the length of array a. It is guaranteed that the sum of values of n over all test cases in the input does not exceed 105.

The second line of each test case contains n integers a1,a2,…,an (−109≤ai≤109).

Output
For each test case, print the minimum number of seconds in which you can make a nondecreasing.

Example
Input
3
4
1 7 6 5
5
1 2 3 4 5
2
0 -4
Output
2
0
3
Note
In the first test case, if you select indices 3,4 at the 1-st second and 4 at the 2-nd second, then a will become [1,7,7,8]. There are some other possible ways to make a nondecreasing in 2 seconds, but you can’t do it faster.

In the second test case, a is already nondecreasing, so answer is 0.

In the third test case, if you do nothing at first 2 seconds and select index 2 at the 3-rd second, a will become [0,0].

思路:找到当前位置和前面数的最大差值,把每一个位置的add合并可以得到形如10010的二进制数即差值,假设二进制数的长度为ans,那么它可以表示0~pow(2,ans)-1的数,所以我们只需要求出最大的一个差值需要多少位二进制表示出来即可

#include<iostream>
#include<cmath>
using namespace std;
const int N=1e5+10;
int a[N],qz[N],mx;
int main()
{int t;cin>>t;while(t--){int n;cin>>n;mx=0;for(int i=1;i<=n;i++) scanf("%d",a+i);qz[1]=a[1];for(int i=2;i<=n;i++){qz[i]=max(qz[i-1],a[i]);mx=max(mx,qz[i]-a[i]);}long long ans=0;while(pow(2,ans)-1<mx) ans++;cout<<ans<<endl;}
}

C - Powered Addition相关推荐

  1. Codeforces Round #633 (Div. 2) C.Powered Addition

    Codeforces Round #633 (Div. 2) C.Powered Addition 题目链接 You have an array a of length n. For every po ...

  2. A. Powered Addition【贪心】

    要想递增,故每一个数都大于等于前面的最大值.存一下这个最大的差值. 然后求其二进制位数,就是最优解. #include<bits/stdc++.h> using namespace std ...

  3. CodeForces - 1339C Powered Addition(思维+贪心)

    题目链接:点击查看 题目大意:给出一个由 n 个数组成的数列 a,选择一个最小的 k ,代表可以进行 k 次操作,对于第 t 次操作可以选择任意个位置使得 a[ i ] = a[ i ] + 2^( ...

  4. Powered Addition CodeForces - 1339C(位运算)

    You have an array a of length n. For every positive integer x you are going to perform the following ...

  5. XUPT_ACM2021寒假训练第一周练习记录

    试题链接:第一周训练题 - Virtual Judge 目录 A - 查成绩 B - 放暑假 C - 展开字符串 D - 回文数猜想 E - 宇航员 F - 买鸡问题 G - 水贴 H - 最小新整数 ...

  6. 组件分享之后端组件——国际化组件go-i18n

    组件分享之后端组件--国际化组件go-i18n 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件 ...

  7. CF第633场 (Div. 2)

    CF第633场 (Div. 2) 今天开始也开始写cf题解了,致力于分析巧解和题目的思维. 本次战绩:惨不忍睹,一直卡D,看来必须要进行数据结构了,说的也是,dfs和bfs都不会写是真的丢人. A题F ...

  8. Codeforces补题记录(1)

    文章目录 Codeforces补题记录(1) 1.Codeforces Round #632 (Div. 2)(2020.4.11) A.Little Artem B.Kind Anton *C.Eu ...

  9. 第13届年度Webby奖采用Silverlight / 13th Annual Webby Awards powered by Silverlight

    13th Annual Webby Awards powered by Silverlight 第13届年度Webby奖采用Silverlight 原文连接:http://team.silverlig ...

最新文章

  1. 基于RFID的防伪系统设计
  2. linux环境中,查询网卡的速度(带宽)
  3. Infortrend推出超大容量存储解决方案
  4. Python 中的面向对象没有意义
  5. Java8函数式编程(5)--中间操作(源码)
  6. RabbitMQ开机启动 Centos7环境
  7. 使软件可二次开发_RobotStudio二次开发:Smart组件I/O信号声明
  8. jQuery动画效果之上卷下拉
  9. 谷歌地球-覆盖全球任何一个角落的地图软件
  10. 郝斌老师 c语言学习笔记
  11. 微信小程序http模块和接口model模块
  12. 互联网+餐饮:看李帅与面点王董事长张和平如何说
  13. 坦克类游戏的制作之路
  14. 微软的mak与kms区别
  15. 服务器重装系统进入pe找不到硬盘,U盘装系统进入PE无法找到硬盘怎么办?
  16. Python str strip方法
  17. 神操作!树莓派上运行滴滴开源的Logi-KafkaManager,你见过没?
  18. 文件服务器杀毒软件推荐,服务器杀毒软件哪个好 服务器装什么杀毒软件【详解】...
  19. 2022-2028全球过冷计量装置行业调研及趋势分析报告
  20. 微博全量开放IP属地功能;“月薪三千能买什么样的手机”上热搜,苹果第一;​华为轮值董事长胡厚崑:没有自建芯片厂计划 | EA周报...

热门文章

  1. 今天两家面试:阿康健康和千鸟互联
  2. 混沌工程开源工具 Chaosblade 探究
  3. 写个 shell 玩 数字炸弹
  4. 拍立淘Open SDK-在你的App里用相机连接淘宝和世界
  5. 项目销售的技巧(二)
  6. good good study day day up
  7. Charles 抓包工具教程(七) Charles- compose 创建模拟请求
  8. 一键点击,建立你的云端游戏开发工作室
  9. JNative 调用动态链接库 调用动态链接库函数
  10. 计算机职高班教育故事,职高我的教育故事