为什么用cout只得90分而print当场AC,P1802 5倍经验日
  • 板块学术版
  • 楼主ljc114514
  • 当前回复17
  • 已保存回复17
  • 发布时间2023/7/23 20:39
  • 上次更新2024/7/24 08:31:38
查看原帖
为什么用cout只得90分而print当场AC,P1802 5倍经验日
1011094
ljc114514楼主2023/7/23 20:39

这个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分

2023/7/23 20:39
加载中...