这个90分
代码如下
#include<bits/stdc++.h>
using namespace std;
int dp[114514];
int win[1919],lose[1145],use[514810];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
scanf("%d%d%d",lose+i,win+i,use+i);
for(int i=1;i<=n;i++){
for(int j=m;j>=use[i];j--)
dp[j]=max(dp[j]+lose[i],dp[j-use[i]]+win[i]);
for(int j=use[i]-1;j>=0;j--)
dp[j]+=lose[i];
}
cout<<5*dp[m]<<endl;
return 0;
}
AC
代码
#include<bits/stdc++.h>
using namespace std;
int dp[114514];
int win[1919],lose[1145],use[514810];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
scanf("%d%d%d",lose+i,win+i,use+i);
for(int i=1;i<=n;i++){
for(int j=m;j>=use[i];j--)
dp[j]=max(dp[j]+lose[i],dp[j-use[i]]+win[i]);
for(int j=use[i]-1;j>=0;j--)
dp[j]+=lose[i];
}
printf("%lld",5ll*dp[m]);
return 0;
}
后面看了看题解改了一下输出用了printf,直接就AC了
所以
cout<<5*dp[m]<<endl;
和
printf("%lld",5ll*dp[m]);
有什么不一样呢,cout直接导致了90分