2022-11-22:小美将要期中考试,有n道题,对于第i道题, 小美有pi的几率做对,获得ai的分值,还有(1-pi)的概率做错,得0分。 小美总分是每道题获得的分数。 小美不甘于此,决定突击复习,
Posted 福大大架构师每日一题
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-11-22:小美将要期中考试,有n道题,对于第i道题, 小美有pi的几率做对,获得ai的分值,还有(1-pi)的概率做错,得0分。 小美总分是每道题获得的分数。 小美不甘于此,决定突击复习,相关的知识,希望对你有一定的参考价值。
2022-11-22:小美将要期中考试,有n道题,对于第i道题,
小美有pi的几率做对,获得ai的分值,还有(1-pi)的概率做错,得0分。
小美总分是每道题获得的分数。
小美不甘于此,决定突击复习,因为时间有限,她最多复习m道题,复习后的试题正确率为100%。
如果以最佳方式复习,能获得期望最大总分是多少?
输入n、m
接下来输入n个整数,代表pi%,为了简单期间,将概率扩大了100倍。
接下来输入n个整数,代表ai,某道题的分值
输出最大期望分值,精确到小数点后2位
数据 1m<=n<=50000
来自美团。8.20笔试。题目1。
答案2022-11-22:
丢掉的分数的期望排序。复习前m道题。
代码用rust编写。代码如下:
use std::iter::repeat;
fn main()
let mut pi = vec![20, 50];
let mut ai = vec![100, 200];
let ans = maximum_expected_score(&mut pi, &mut ai, 1);
println!("ans = :?", ans);
fn maximum_expected_score(pi: &mut Vec<i32>, ai: &mut Vec<i32>, m: i32) -> f64
let n = pi.len() as i32;
//不复习的分数总和
let mut not_review_score = 0;
//复习的获得分数数组
let mut review_vec: Vec<i32> = repeat(0).take(n as usize).collect();
for i in 0..n
not_review_score += ai[i as usize] * pi[i as usize];
review_vec[i as usize] = ai[i as usize] * (100 - pi[i as usize]);
//对复习数组排序
review_vec.sort();
review_vec.reverse();
let mut ans = not_review_score;
for i in 0..m
ans += review_vec[i as usize];
return ans as f64 / 100.0;
执行结果如下:
以上是关于2022-11-22:小美将要期中考试,有n道题,对于第i道题, 小美有pi的几率做对,获得ai的分值,还有(1-pi)的概率做错,得0分。 小美总分是每道题获得的分数。 小美不甘于此,决定突击复习,的主要内容,如果未能解决你的问题,请参考以下文章