分组背包啊
2025-05-05 19:38:55
发布于:上海
15阅读
0回复
0点赞
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int a[210],b[210];
long long dp[25][210];
int main(){
memset(dp,0x3f,sizeof(dp));
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>a[i]>>b[i];
}dp[0][0]=0;
for(int i=1;i<=m;i++){
dp[i][0]=0;
for(int j=0;j<=n;j++){
dp[i][j]=dp[i-1][j];
//考虑用多少篇文章(可不用)
for(int k=0;k<=j;k++){
long long time=a[i]*(long long)pow(k,b[i]);
dp[i][j]=min(dp[i][j],dp[i-1][j-k]+time);
}
}
}cout<<dp[m][n];
return 0;
}
这里空空如也
有帮助,赞一个