• Powered Addition CodeForces


    题目大意:任意时间x,选择任意个数任意位置的元素,加上pow(2,x-1),最终要求数组单调不下降。

    题解:题目要求数组不下降,如过说arr[i]<arr[i-1],我们尽量让arr[i]==arr[i-1],因为二进制可以表示任何数字,所以我们求出来arr[i]和arr[i-1]之间的最大差距,然后输出他的二进制位最高位的1所在的位置就好了.......唉

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const ll N=1e5+7;
    ll arr[N];
    void solve(){
        ll n;
        cin>>n;
        for(ll i=1;i<=n;i++) cin>>arr[i];
        ll tmp=0;
        for(ll i=2;i<=n;i++){
            if(arr[i]>=arr[i-1]) continue ;
            else {
                tmp=max(arr[i-1]-arr[i],tmp);
                arr[i]=arr[i-1];
            }
        }
        ll ans=0;
        ll time=0;
        for(ll i=0;i<=32;i++){
            if((tmp>>i)&1) time=i+1;
        }
        cout<<time<<endl;
    }
    
    int main(){
        ll t;
        cin>>t;
        while(t--) solve();
        return 0;
    }
  • 相关阅读:
    eclipse常用快捷键
    Android 布局
    Android UI设计
    Android Context 是什么?
    内部类
    手写单例模式
    上课笔记:移动开发新利器-你好,Flutter
    Android Fragment
    Kotlin语言
    Android虚拟机和类加载机制
  • 原文地址:https://www.cnblogs.com/Accepting/p/12801623.html
Copyright © 2020-2023  润新知