分类枚举 分类的依据的常数玄学设?
#include<bits/stdc++.h>
using namespace std;
const int maxn=10000;
int main(){
int t;
int kase=0;
scanf("%d",&t);
while(t--){
long long n,s1,v1,s2,v2;
scanf("%lld%lld%lld%lld%lld",&n,&s1,&v1,&s2,&v2);
if(s1>s2){
swap(s1,s2);
swap(v1,v2);
}
long long ans=0;
if(n/s2>maxn){
for(long long i=0;i<=s1;i++){
ans=max(ans,i*v2+(n-i*s2)/s1*v1);
}
for(long long i=0;i<=s2;i++)
ans=max(ans,i*v1+(n-i*s1)/s2*v2);
}
else {
for(long long i=0;i<=n/s2;i++){
ans=max(ans,i*v2+(n-i*s2)/s1*v1);
}
}
printf("Case #%d: %lld\n", ++kase, ans);
}
return 0;
}

本文介绍了一个使用枚举优化策略解决特定数学问题的C++程序。该程序通过输入五个整数参数,采用不同的枚举策略来求解最大化的线性组合问题,并通过条件判断和变量交换确保了计算的正确性和效率。
326

被折叠的 条评论
为什么被折叠?



