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

🍎笔记

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

相关推荐
weixin_460443566 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
海鸥-w9 小时前
什么是AOP
java
Cc.Y9 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
paopaokaka_luck9 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
sm_926787059 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
阿森_dev9 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
by209999 小时前
C++ 多态:同一个基类接口,调用不同的函数
开发语言·c++·经验分享·多态
笔墨登场说说9 小时前
flink bin/start-cluster.sh 帮我做成开机启动
开发语言·python
Sarvartha9 小时前
Lambda 表达式和函数式接口
java·开发语言
计算机毕业设计杰瑞10 小时前
【计算机毕设精品】基于SpringBoot的一体化教务与学业质量管理系统的设计与实现,附源码_增删改查_java项目_可完美运行部署_网站项目
java·spring boot·课程设计