题意:给出n个题目,题目总分m分,每道题至少需要对应的分数+1的时间复习才可以通过,需要通过k个题目,试问如何安排复习时间才是最快的?
思路:
思考学生复习的最坏的情况是老师出的(n-k+1)个题目他都没有复习好(并且这n-k+1个题目是复习的时间最短的),那么如何来对待这种最坏的情况呢,首先假设问题已经发生,那么因为学生只缺一题没有做了所以若(n-k+1)个题目一共用m+1的时间来复习,那么就一定至少有一门课可以被复习好,那么加上之前的k-1门课就可以复习完k门课程了,并且(k-1)门课复习时间一定是比之前的n-k+1门课高的(或者相等的),并且之前的n-k+1门课一定是每门课用了((m+1)/(n-k+1))的时间,因为只有这样才可以确保这(n-k+1)门课可以至少有一门课是复习好的,那么总时间就是((m+1)/(n-k+1))向上取整再加上m+1
遇到这种情况,首先要思考学生最坏的情况是什么,若想不到则换位思考老师最优的情况是什么,那么学生该如何的应对这种老师的最优的情况
#include <stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#define maxn 100001
typedef long long ll;
using namespace std;
int main(int argc, char *argv[])
{
int t;
scanf("%d",&t);
while(t--)
{
long long n,m,k;
scanf("%lld %lld %lld",&n,&m,&k);
printf("%lld\n",m+1+ll(ceil((1.0*(m+1)/(n-k+1))))*(k-1));
}
return 0;
}