2024年蓝桥杯Java B组省赛真题超详解析-最优分组

审题:混合、再消耗;取值、最小

汇总:关键:期望

基础:特殊情况

注意:稍微理解

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

public class Main {

    static int N, ans;
    static double p, min = Double.MAX_VALUE / 2; // min是可能的最小期望
    static ArrayList<Integer> factors = new ArrayList<>();

    // 计算不同K值对应的期望
    static double calculateExpected(int K) {
        if (K == 1) return N; // 每一个都检测,所以直接是N的消耗
        double probabilityAllNegative = Math.pow(1 - p, K);
        double expectedTestsPerGroup = probabilityAllNegative * 1 + (1 - probabilityAllNegative) * (1 + K);
        return expectedTestsPerGroup * ((double) N / K);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        p = sc.nextDouble();

        // 计算所有的约数K
        for (int i = 1; i <= Math.sqrt(N); i++) {
            if (N % i == 0) {
                factors.add(i);
                if (N / i != i) {
                    factors.add(N / i);
                }
            }
        }

        // 对K进行升序
        Collections.sort(factors);

        // 枚举所有可能的约数K,寻找最小期望对应的K
        for (int K : factors) {
            double currentExpected = calculateExpected(K);
            if (currentExpected < min) {
                ans = K;
                min = currentExpected;
            }
        }

        System.out.println(ans);
    }
}
相关推荐
DKPT22 分钟前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
好奇的菜鸟2 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
DuelCode3 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社23 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
幽络源小助理3 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
猴哥源码3 小时前
基于Java+springboot 的车险理赔信息管理系统
java·spring boot
YuTaoShao4 小时前
【LeetCode 热题 100】48. 旋转图像——转置+水平翻转
java·算法·leetcode·职场和发展
Dcs4 小时前
超强推理不止“大”——手把手教你部署 Mistral Small 3.2 24B 大模型
java
东阳马生架构4 小时前
订单初版—1.分布式订单系统的简要设计文档
java
Code blocks5 小时前
使用Jenkins完成springboot项目快速更新
java·运维·spring boot·后端·jenkins