竞赛总分题解
2025-05-04 13:17:47
发布于:浙江
1阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int V, n;
int a[10001],b[10001],f[10001]; //根据题目数据范围开数组,大一点的数组建议开全局
int main(){
cin >> V >> n; //输入时间,种类
for(int i = 1;i<=n;i++)
scanf("%d %d",&a[i],&b[i]); //这里要注意a数组为价值b数组为代价!!!
for(int j = 1;j<=n;j++)
for(int k = b[j];k<=V;k++) //从0开始也可以记得加上判断防止k-b(j) < 0
f[k] = max(f[k],f[k-b[j]]+a[j]); //状态转移方程一定不要把代价和价值弄反!!!一定!
printf("%d",f[V]);
return 0;
}
这里空空如也
有帮助,赞一个