虽然我不是妹子,但我是真有疑惑
查看原帖
虽然我不是妹子,但我是真有疑惑
676490
xi_11楼主2022/9/21 14:16
 #include<bits/stdc++.h>
 #define int long long
 using namespace std;
 int n,m;
 int f[500][500][2];
 int a[500][500];
signed main(){
      scanf("%lld%lld",&n,&m);
	  int x,b,c;
	for(int i=1;i<=m;i++){
scanf("%lld%lld%lld",&x,&b,&c);
		a[b][c]=x;
	  }
for(int len=1;len<=n;len++)
     for(int i=1;i+len-1<=n;i++){
	   int j=i+len-1;
	  for(int k=i;k<j;k++){
      f[i][j][0]=max(max(max(f[i][k][1]+f[k+1][j][0],f[i][k][0]+f[k+1][j][1]),f[i][k][0]+f[k+1][j][0]),f[i][j][0]);
      f[i][j][1]=max(f[i][j][1],f[i][k][1]+f[k+1][j][1]);
	}
  f[i][j][1]=max(f[i][j][1],f[i][j][0]+a[i][j]);
	   }
	 long long ans=0;
	 ans=max(f[1][n][0],f[1][n][1]) ;
	 cout<<ans;
}

我设法f[i][j][1/0]为在i,j这片区域的草有没有被吃完。这种状态有什么遗漏或错误嘛?为什么不对

2022/9/21 14:16
加载中...