当前位置: 首页 > article >正文

Codeforces 1338A —— Powered Addition 题解

题目地址:https://codeforces.com/problemset/problem/1338/A

解题思路:对每一个元素 a,比较当前 a 和 在 a 之前的出现的最大值 Max,如果 a < Max,那么记录这个 diff 值,维护一个 MaxDiff。

如果 MaxDiff > 0,代表我们只需要 1 + 2 + 4 + .... + 2^(n-1) >= MaxDiff,即可达到使数组非递减的效果。

复杂度:时间:O(sum(ni) , 空间:O(1)

// AC: 546 ms 
// Memory: 2200 KB
// Array & DP: for every elements, find the max diff between current element and the former biggest element.
// Then try to add 1 + 2 + .. + 2^(n-1) to make diff reach, the answer is n.
// T:O(sum(ni)), S:O(1)
//  
import java.util.Scanner;

public class Codeforces_1338A_Powered_Addition {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        for (int i = 0; i < t; i++) {
            int n = sc.nextInt(), curMax = Integer.MIN_VALUE, maxDiff = 0, ret = 0;
            for (int j = 0; j < n; j++) {
                int a = sc.nextInt();
                if (a > curMax) {
                    curMax = a;
                } else if (a < curMax) {
                    maxDiff = Math.max(maxDiff, curMax - a);
                }
            }
            if (maxDiff > 0) {
                int cur = 0, base = 0;
                while (cur < maxDiff) {
                    cur += Math.pow(2, base);
                    base++;
                }
                ret = base;
            }

            System.out.println(ret);
        }
    }
}

http://www.kler.cn/news/319689.html

相关文章:

  • 持续学习与创新能力的双重提升
  • javaseday31多线程
  • Node.js 学习 path模块、fs模块、npm软件包管理器、导出、导入
  • 通信工程学习:什么是VPN虚拟专用网络
  • 微服务配置中心介绍
  • 计算机毕业设计之:基于微信小程序的校园流浪猫收养系统
  • 【24华为杯数模研赛赛题思路已出】国赛B题思路丨附参考代码丨免费分享
  • 应用层 I(C/S模型、P2P模型、域名系统DNS)【★★】
  • can not run elasticsearch as root
  • 【前端】ES6:Proxy代理和Reflect对象
  • 【百日算法计划】:每日一题,见证成长(020)
  • 如何查看线程
  • 项目第一弹:RabbitMQ介绍
  • C语言之预处理详解(完结撒花)
  • JAVA链表
  • 网站在线客服插件配置
  • Stable Diffusion的高分辨率修复(Hires.fix)
  • 嵌入式单片机中can总线调试方法
  • 漏洞扫描工具使用
  • vulnhub(11):derpnstink(hydra爆破用户名和密码、验证的文件上传)
  • 多表查询。
  • 以太坊客户端Geth的介绍与搭建
  • (PySpark)RDD实验实战——取一个数组的中间值
  • 求一个数的因子数(c语言)
  • C语言 | Leetcode C语言题解之第416题分割等和子集
  • 自然场景文本定位系统源码分享
  • MFC -文件类控件
  • 暑期内卷!就练这400页软件测试面试题(附答案解析)!
  • fmql之ubuntu添加dhcp服务
  • 函数题 7-7 12-24小时制【PAT】