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;
    }
}

🍎笔记

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

相关推荐
用户3126874877202 小时前
ConcurrentHashMap 怎么保证线程安全?从分段锁到 CAS+synchronized
java
vipxieliang2 小时前
ValidX vs Apache Commons Validator:功能与性能对比
java·spring boot
SimonKing2 小时前
升级Spring Boot 4后,从 Jackson 2 到 3,到底有哪些变化
java·后端·程序员
吃饱了得干活2 小时前
一篇讲清楚Spring Boot:自动装配、启动器、过滤器、拦截器、设计模式
java·spring boot·后端
lhldsg4 小时前
AI零售系统实战指南:从架构设计到落地部署全解析
java·人工智能·小程序·uni-app·零售
Interview Aid1124 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
mldong4 小时前
换了工作流引擎,前端一行代码没改
java·架构
CoderIsArt12 小时前
C#中UI 线程与 Dispatcher
开发语言·ui·c#
微尘寒风12 小时前
【Git】的安装和使用
java·git
y = xⁿ12 小时前
DeepSeek Harness 学习日记:关于Agent接口,工具调用的底层实现
android·java·学习