Elimination(洛谷)

题目翻译
在2214年的的 “Russian代码杯” 的决赛选手将是在淘汰赛中的获胜者。

两种形式的选拔赛 淘汰赛有两种形式,我们把他叫正常赛与特殊赛,

正常赛中的题目为 c 道,获胜的 n 个人可以参加决赛;特殊赛题目为 d 道,获胜的 1 个人可参加决赛。

此外,有 k 位大佬拥有报送名额,不用参加淘汰赛。(黑幕)

组委会需要你组织好各轮淘汰赛,比赛用到的题目要最少,但是保证在所有淘汰赛结束后,有 n * m 位选手进入决赛。

输入格式
第 1 行输入 c 和 d
第 2 行输入 n 和 m
第 3 行输入 k

输出格式
输出最少需要多少道题目

输入样例1
1 10
7 2
1

输出样例1
2

输入样例2
2 2
2 1
2

输出样例2
0

数据范围
1 ≤ c, d ≤ 100
1 ≤ n, m ≤ 100
1 ≤ k ≤ 100


题解
完全背包(优化2.0):

题目没要求通过比赛进入决赛的人数严格为 n * m - k

#include <iostream>
#include <cstring>
using namespace std;

const int N = 10010;

int c, d, n, m, k;
int v[4], w[4], f[N];

int main()
{
    
    
	memset(f, 0x3f, sizeof f);
	cin >> c >> d >> n >> m >> k;
	
	v[1] = n, v[2] = 1;
	w[1] = c, w[2] = d;
	
	f[0] = 0;
	for (int i = 1; i <= 2; i ++)
		for (int j = v[i]; j <= n * m; j ++)
			f[j] = min(f[j], f[j - v[i]] + w[i]);
			
	int ans = 0x3f3f3f3f;
	for (int i = n * m - k; i <= n * m; i ++) ans = min(ans, f[i]);
	
	cout << ans << endl;
	return 0;		
}

猜你喜欢

转载自blog.csdn.net/weixin_46239370/article/details/108908755