当前位置:网站首页>【CodeForces】CF1338A - Powered Addition【二进制】
【CodeForces】CF1338A - Powered Addition【二进制】
2022-07-03 02:00:00 【是王同学呀】
题意
给出一个长度为 n ( n < = 100000 ) n ( n < = 100000 ) n(n<=100000)的数组,在第 i i i秒时可以任意选出一些数使它们的值增加 2 i − 1 2^{i-1} 2i−1,问如果要使得该数组不递减至少需要多少秒?
思路
遍历数组,维护一个前缀最大值,如果当前 a [ i ] < m a x c u r a[i]<max_{cur} a[i]<maxcur,说明当前 a [ i ] a[i] a[i]需要补齐 m a x c u r − a [ i ] max_{cur}-a[i] maxcur−a[i]大小,然后当前 a [ i ] a[i] a[i]变为 m a x c u r max_{cur} maxcur,最后 m a x ( m a x c u r − a [ i ] ) max(max_{cur}-a[i]) max(maxcur−a[i])的二进制位数就是我们要求的答案。
AC代码
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization("unroll-loops")
#include<bits/stdc++.h>
using namespace std;
#define x first
#define y second
typedef long long ll;
typedef pair<int, int> p;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
const int maxn = 2e5 + 10;
int a[maxn];
int h[maxn];
int main() {
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
int t;
cin >> t;
while(t--){
int n;
cin >> n;
int max_cur = INT32_MIN;
int max_delta = INT32_MIN;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= n; i++){
if(a[i] > max_cur) max_cur = a[i];
else max_delta = max(max_delta, max_cur-a[i]);
}
if(max_delta==INT32_MIN) cout<<0<<endl;
else{
int cnt = 0;
while(max_delta) max_delta = max_delta >> 1, cnt++;
cout<<cnt<<endl;
}
}
return 0;
}
边栏推荐
- Where is the future of test engineers? Confused to see
- Hard core observation 547 large neural network may be beginning to become aware?
- 8 free, HD, copyright free video material download websites are recommended
- 小程序開發的部分功能
- 詳細些介紹如何通過MQTT協議和華為雲物聯網進行通信
- 微信小程序开发工具 POST net::ERR_PROXY_CONNECTION_FAILED 代理问题
- Leetcode 183 Customers who never order (2022.07.02)
- 【Camera专题】OTP数据如何保存在自定义节点中
- What are the key points often asked in the redis interview
- 深度(穿透)选择器 ::v-deep/deep/及 > > >
猜你喜欢

【Camera专题】Camera dtsi 完全解析

Recommendation letter of "listing situation" -- courage is the most valuable

Custom components, using NPM packages, global data sharing, subcontracting

全链路数字化转型下,零售企业如何打开第二增长曲线

udp接收队列以及多次初始化的测试

A 30-year-old software tester, who has been unemployed for 4 months, is confused and doesn't know what to do?

详细些介绍如何通过MQTT协议和华为云物联网进行通信

Depth (penetration) selector:: v-deep/deep/ and > > >

How do it students find short-term internships? Which is better, short-term internship or long-term internship?

Network security - vulnerabilities and Trojans
随机推荐
【Camera专题】HAL层-addChannel和startChannel简析
[fluent] fluent debugging (debug debugging window | viewing mobile phone log information | setting normal breakpoints | setting expression breakpoints)
Network security - cracking system passwords
Cfdiv2 fixed point guessing- (interval answer two points)
Comment le chef de file gère - t - il l'équipe en cas d'épidémie? Contributions communautaires
How can retail enterprises open the second growth curve under the full link digital transformation
Depth (penetration) selector:: v-deep/deep/ and > > >
Missing library while loading shared libraries: libisl so. 15: cannot open shared object file: No such file
y54.第三章 Kubernetes从入门到精通 -- ingress(二七)
easyExcel
es6 filter() 数组过滤方法总结
Button button adaptive size of wechat applet
[Yu Yue education] China Ocean University job search OMG reference
Network security - scanning and password explosion 2
Redis: simple use of redis
The testing process that software testers should know
The technology boss is ready, and the topic of position C is up to you
Analyzing several common string library functions in C language
Visualisation de l'ensemble de données au format yolov5 (fichier labelme json)
How do it students find short-term internships? Which is better, short-term internship or long-term internship?