99分巧克力

99分巧克力

⭐️难度:中等

🌟考点:二分

2017省赛真题

📖

📚

java 复制代码
import java.util.Scanner;

public class  Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int k = sc.nextInt();

        int[] h = new int[100010];
        int[] w = new int[100010];

        for (int i = 1; i <= n; i++) {
            h[i] = sc.nextInt();
            w[i] = sc.nextInt();
        }

        // 所切最大边长和最小边长
        int l = 1;
        int r = 10000;

        while(l < r){
            int mid = (l + r + 1) / 2;
            if(check(mid,n,h,w,k)){
                l = mid;
            }else{
                r = mid -1;
            }
        }
        System.out.println(l);
    }

    static boolean check(int x,int n,int[] h,int[] w,int k){
        long ans = 0;
        for (int i = 1; i <= n; i++) {
            ans = ans + (h[i] / x) * (w[i] / x);
            if(ans >= k){
                return true; // 够分,return true
            }
        }
        return false;
    }
}

🍎笔记

可以看出随着巧克力边长的变小,巧克力分出来的数量越多,因此是一个递减函数。具有单调性。可以利用二分。

相关推荐
fegggye3 分钟前
创建一个rust写的python库[signatures和错误处理]
开发语言·python·rust
hahjee3 分钟前
Go编写的ANSI终端颜色和样式控制库在OpenHarmony PC上的完整适配实战
开发语言·后端·鸿蒙
野蛮人6号11 分钟前
黑马微服务p10mybatisplus09核心功能iservice 测试文档无法正常打开
java·黑马微服务
危险、12 分钟前
《Java Stream 中 toMap 的生产级用法:一次 Duplicate key 的异常问题复盘》
java
拉姆哥的小屋13 分钟前
从400维向量到160000维矩阵:基于深度学习的火焰参数预测系统全解析
开发语言·人工智能·python·深度学习·线性代数·算法·矩阵
雨落在了我的手上15 分钟前
C语言入门(二十八):动态内存管理(2)
c语言·开发语言
矢鱼15 分钟前
python中对应c++容器的结构
开发语言·c++·python·算法
Doris89317 分钟前
【JS】JS进阶--编程思想、面向对象构造函数、原型、深浅拷贝、异常处理、this处理、防抖节流
开发语言·javascript·ecmascript
古城小栈17 分钟前
Java 内存优化:JDK 22 ZGC 垃圾收集器调优
java·python·算法
Clarence Liu19 分钟前
golang 剖析 sync包
开发语言·golang