codeforces 417A - Elimination

题目链接:http://codeforces.com/problemset/problem/417/A

题目大意:淘汰赛分为主赛和附加赛。每场主淘汰赛的有Ç问题,该轮的获胜者是排名的前n人。每场附加淘汰赛中有d个问题,该轮的获胜者是一个人。此外,K个过去总决赛被邀请的获奖者不需要参加淘汰赛。现在需要选拔出n*m个获胜者,求至少需要准备多少个题目。

题目分析:我是考虑每个题目的价值来比较的,当c/n = d/1时,两者价值相同,最后可能会多出来的单独讨论。

代码参考:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 2009;
int main()
{
	int n, m, c, d, k, cnt;

	while (~scanf("%d%d%d%d%d", &c, &d , &n, &m, &k)) {
		int tot = max(0, n * m - k);//总共需要选出多少个人

		if (c < d * n) {//如果主赛的价值比较大
			cnt = (tot / n) * c;//需要的题目数
			tot %= n;//剩余的待选人数
		} else {//如果附加赛的价值比较大
			cnt = tot * d;//需要的题目数
			tot = 0;//不会有剩余
		}

		cnt += min(c, tot * d);//剩下的只可能需要一场比赛就能选出,因此在两场中选所需题目数少的就行了
		printf("%d\n", cnt);
	}

	return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值