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);
    }
}
相关推荐
FrankYoou1 天前
Spring Boot 自动配置之 Spring transaction
java·spring boot·spring
数字化顾问1 天前
从索引失效到毫秒级响应——SQL 优化实战案例:从慢查询到高性能的完整指南之电商大促篇
java·开发语言·数据库
珹洺1 天前
Java-Spring 入门指南(十六)SpringMVC--RestFul 风格
java·spring·restful
卷Java1 天前
饼状图修复总结
java·spring boot·uni-app·echarts
oioihoii1 天前
从汇编角度看C++优化:编译器真正做了什么
java·汇编·c++
Asmalin1 天前
【代码随想录day 29】 力扣 406.根据身高重建队列
算法·leetcode·职场和发展
Asmalin1 天前
【代码随想录day 32】 力扣 70.爬楼梯
算法·leetcode·职场和发展
那个松鼠很眼熟w1 天前
1.多线程基础概念
java
聪明的笨猪猪1 天前
Java 集合 “Map(1)”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
懒惰蜗牛1 天前
Day27 | Java集合框架之List接口详解
java·后端·java-ee·list