為甚麼一直NA(89%)?????
我的作法是:
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
ios::sync_with_stdio(0);
cin.tie(0);
unsigned long long int t,n,s1,v1,s2,v2;
cin>>t;
for(long long int i=1;i<=t;i++){
cout<<"Case #"<<i<<": ";
unsigned long long int sum=0;
cin>>n>>s1>>v1>>s2>>v2;
if(v1*s2>=v2*s1){
sum+=v1*(n/s1);n%=s1;
sum+=v2*(n/s2);
}else if(v1*s2<v2*s1){
sum+=v2*(n/s2);n%=s2;
sum+=v1*(n/s1);
}
cout<<sum<<'\n';
}
return 0;
}
應該不會溢位,連測資數最多的#7也過了
為甚麼在#3一直過不了?
你可以考慮以下測資:
10 3 30 2 19
你的程式會判斷成拿3個第一件物品,
總價值為 3×30 = 90 ,
實際上最優的拿取方法是 2個第一件物品 + 2個第二件物品,
總體積: 2×3+2×2 = 10 (符合)
總價值: 2×30+2×19 = 98
以上提供你做參考~
希望有幫助到你~ OwO
一語點醒夢中人!
雖然這樣,還是不知道怎麼寫(那個解題報告在講什麼?)
如果我沒記錯的話
這好像要用DP......
我不會DP啊!!!!QAQ