为什么把输入和处理分开就不对
查看原帖
为什么把输入和处理分开就不对
1271698
0315cbw楼主2024/3/17 17:25

下面这个是错的

#include <bits/stdc++.h>
using namespace std;
#define ll long long
inline int read(){
	int x=0,f=1;char ch=getchar();
	while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();	}
	while(ch<='9'&&ch>='0'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
	return x*f;
}
ll dp[102][102];
ll a[102][102];
int main()
{
	int n=read();
	int k=read();
	k=min(k,n);
	for(int j=0;j<=n;j++){
			for(int m=0;m<=k;m++){
				dp[j][m]=-INT_MAX;
			}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=i;j++)
		a[i][j]=read();
		if(i==1){
		    dp[1][0]=a[1][1];
		    dp[1][1]=max(dp[1][0],a[1][1]*3);
		    for(int u=2;u<=k;u++){
		        dp[1][u]=dp[1][1];
		    }
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=i;j>0;j--){
			for(int m=k;m>0;m--){
				dp[j][m]=max(max(dp[j-1][m],dp[j][m])+a[i][j],max(dp[j-1][m-1],dp[j][m-1])+a[i][j]*3);
			
			}
			dp[j][0]=max(dp[j-1][0],dp[j][0])+a[i][j];
		}

	}
	ll ans=-INT_MAX;
	for(int i=1;i<=n;i++){
		for(int m=0;m<=k;m++){
			
			ans=max(ans,dp[i][m]);
		}
	}
	cout<<ans;
}

但是这个就是对的

#include <bits/stdc++.h>
using namespace std;
#define ll long long
inline int read(){
	int x=0,f=1;char ch=getchar();
	while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();	}
	while(ch<='9'&&ch>='0'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
	return x*f;
}
ll dp[102][102];
ll a[102];
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	int n=read();
	int k=read();
	k=min(k,n);
	for(int j=0;j<=n;j++){
			for(int m=0;m<=k;m++){
				dp[j][m]=-INT_MAX;
			}
	}
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=i;j++)
		a[j]=read();
		if(i==1){
			dp[1][0]=a[1];
			dp[1][1]=max(a[1],a[1]*3);
			for(int m=2;m<=k;m++){
				dp[1][m]=dp[1][1];
			}
			continue;
		}
		for(int j=i;j>0;j--){
			for(int m=k;m>0;m--){
				dp[j][m]=max(max(dp[j-1][m],dp[j][m])+a[j],max(dp[j-1][m-1],dp[j][m-1])+a[j]*3);
			
			}
			dp[j][0]=max(dp[j-1][0],dp[j][0])+a[j];
		}
	}
	ll ans=-INT_MAX;
	for(int i=1;i<=n;i++){
		for(int m=0;m<=k;m++){
			
			ans=max(ans,dp[i][m]);
		}
	}
	cout<<ans;
}
2024/3/17 17:25
加载中...