【2019杭电多校第七场1006=HDU6651】Final Exam(思维转换)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6651

题目:


n个问题,每个问题的分数都是整数,范围在【0,m】,若某个问题的分数是x, 那么要花x+1个小时准备才能解决这个问题。

问:若至少要解决k个问题,最少需要准备多少个小时?

 

解题思路:


如果不能解决k个问题,最好的情况是能解决k-1个问题,剩下n-k+1个问题是无法解决的,最惨的情况是这n-k+1个问题每个问题的分数和准备的时间相同。因为在准备的时候不知道每个题目对应的分数,那么为了能够把k-1个问题都解出来,每个问题的准备时间都是\frac{m}{n-k+1}(毕竟能解出k-1道,这时可以想成k-1道是白给你的,题目占分没啥意义)。若想解出k个问题,必须在剩下的n-k+1个问题中保证能解出来一个问题,那么准备的时间最小为m+1。

最终答案:ans=(\frac{m}{n-k+1}+1)*(r-1)+m+1

 

ac代码:


#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
int main()
{
    //freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);
    ll t, n, m, k;
    scanf("%lld", &t);
    while(t--)
    {
        scanf("%lld %lld %lld", &n, &m, &k);
        ll ans = (m / (n - k + 1) + 1) * (k - 1) + m + 1;
        printf("%lld\n", ans);
    }
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值