2023牛客寒假算法基础集训营1(M题)

文章描述了一个关于分配资源以最大化收益的数学问题。小波奇需要将章鱼仙贝分给朋友,而好感度增加取决于分配的比例。通过动态规划求解最优分配策略,以达到小波奇与所有朋友好感度之和的最大值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

小波奇由于冲动消费,不小心买多了章鱼仙贝,买了一共m份章鱼仙贝,于是她只能把这些仙贝分给n位朋友。

小波奇日常想太多,她认为分仙贝时好感度的变化是有规律的,不过并不是给的仙贝越多,好感度上升的就越多,而是应该看小波奇给出的仙贝数与她当前手里总仙贝的比值。也就是说,若小波奇当前还剩x(x>0)个仙贝,并给了一位朋友y个仙贝(x,y都为整数),则这位朋友对小波奇的好感度将增加y/x(这个值可以为小数)。


现在,小波奇可以任意安排送仙贝的顺序和每次送仙贝的个数,但不能给同一个人送两次仙贝,允许最后手中还有剩余的仙贝,允许最终有朋友没有分到仙贝。社恐的朋友非常重要,所以请你帮助小波奇算一算,在最优送仙贝策略下,小波奇和所有人的好感度之和最大为多少(假设初始小波奇和所有人好感度都为0)。

输入描述:

输入包括两个整数n,m(1≤n,m≤500),表示小波奇的朋友数和仙贝数。

输出描述:

输出问题的答案,即小波奇与朋友们的好感度之和的最大值,考虑到可能存在的浮点误差,你的答案与标准答案的相对误差若10−6之内,就将被判为正确。

示例1

输入

3 3
1.833333333

说明

对应的分配方案是:小波奇初始有3个仙贝,给第一个朋友1块,收获了1/3的好感度;现在小波奇有2个仙贝,给第二个朋友1块,收获了1/2的好感度;最后,小波奇把最后一块仙贝给了第三个朋友,收获了1/1的好感度。因此,总好感度为1/6,并且可以看出没有更好的分配方案。

dp[i][j],表示前i个人分了j个 东西,k表示当前这个人分了k,

#include <iostream>

using namespace std;

constexpr int N=510;
int n,m;
double dp[N][N];
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=0;j<=m;j++){
            for(int k=0;k<=j;k++){
                dp[i][j]= max(dp[i][j],dp[i-1][j-k]+(double)k/(m-(j-k)));
            }
        }
    }
    printf("%.9f",dp[n][m]);
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

q619718

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值