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

🍎笔记

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

相关推荐
初圣魔门首席弟子6 分钟前
c++嵌套类和局部类详细介绍
java·开发语言·c++
nice_lcj5208 分钟前
Java 集合框架之 List 全面解析(从概念到实践)
java·windows·list
橘子师兄8 分钟前
类和对象(上)
开发语言·c++
大飞pkz30 分钟前
【设计模式】备忘录模式
开发语言·设计模式·c#·备忘录模式
高山上有一只小老虎1 小时前
输出单向链表中倒数第k个结点
java·数据结构·链表
失散131 小时前
分布式专题——22 Kafka集群工作机制详解
java·分布式·云原生·架构·kafka
红烧code2 小时前
【Rust GUI开发入门】编写一个本地音乐播放器(9. 制作设置面板)
开发语言·后端·rust
Predestination王瀞潞2 小时前
基础算法(Num012)
c语言·开发语言·算法·排序算法
咖啡Beans2 小时前
SseEmitter + WebClient + Flux实现SSE事件流推送
java·spring boot·flux
NiKo_W2 小时前
C++ 反向迭代器模拟实现
开发语言·数据结构·c++·stl