[HDU6651-2019杭电多校第七场1006] Final Exam

传送门:Final Exam

题意大概是,期末考试中,有n种不同的题形,总分为m,且每道题的分数是不定的,有可能会出现某道题分值为0或分值为m的极端情况。现在,复习一道分值为x的题,需要耗费x+1个单位的时间(若分值为0,仍需要耗费1个单位时间)才能做出这道题。n道题每道题的题形不同且分值未知,需要求出在任何情形下(即卷面各题分数的所有可能情况)都能做出k道题的最小复习时间。

问题的难点在于每道题提醒不同且分值未知,但只要能在最坏的情况下做出k道题,那么就能保证在任何情形下都能做出k道题。考虑最坏的情况:复习时间最少的n-k+1道题,每道题的分数都大于等于复习时间。为了应对这种情况,一个可行的策略是,求出n道题中分值第k小的可能的最大的分数,即\frac{m}{n-k+1},然后复习(\frac{m}{n-k+1}+1)*(k-1)时间以确保一定能够做出k-1道题。而剩下的n-k+1道题中,只要再做出一道即可完成k题的目标,于是,只需要再复习m+1时间,即可保证即使分数最高的n-k+1道题中的某道题分值为m,也能解出这道题。所以,最终的答案就是(\frac{m}{n-k+1}+1)*(k-1)+m+1

#include <iostream>
#include <cmath>
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
ll n, m, k, t;
ll ans;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin >> t;
    while(t--){
        cin >> n >> m >> k;
        cout << (m/(n-k+1)+1)*(k-1)+m+1 << '\n';
    }
    return 0;
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值