求助 80 pts,
查看原帖
求助 80 pts,
246013
invincible_summer楼主2022/3/2 13:43
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<queue>
#include<map>
#include<algorithm>
using namespace std;
typedef long long LL;

#define int LL

int read(void){
    int s = 0, f = 1;
    char c = getchar();
    while(!isdigit(c)){
        if(c == '-') f = -1; c = getchar();
    }
    while(isdigit(c)) {
        s = s * 10 + c - 48; c = getchar();
    }
    return s * f;
}

const int InF = 0x3f3f3f3f;

int n, m;

int a[205], b[205];

int dp[25][205], p[205][205];// dp[i][j][k] 表示选到了第 i 种课题,选了 j 个数

signed main(void) {
	memset(dp, 0x3f3f3f3f, sizeof dp);
	n = read(), m = read();
	for(int i = 1; i <= m; ++i) a[i] = read(), b[i] = read();
	for(int i = 0; i <= m; ++i) dp[i][0] = 0;
	
	for(int i = 1; i <= n; ++i) {
		for(int j = 0; j <= m; ++j) {
			if(j == 0) p[i][j] = 1;
			else p[i][j] = p[i][j-1] * i;
			//cout << p[i][j] << endl;
		}
	}
	
	for(int i = 1; i <= m; ++i) {
		for(int j = 0; j <= n; ++j) {
			for(int k = 0; k <= j; ++k) {
				dp[i][j] = min(dp[i][j], dp[i-1][j-k] + a[i] * p[k][b[i]]);
			}
		}
	}
	
	cout << dp[m][n] << endl;
	
	return 0;
}


错误:

input:

10 3
86 5
26 5
33 3

output:

正确:10712
错误:0
2022/3/2 13:43
加载中...