2 条题解

  • 0
    @ 2025-10-8 17:00:43

    by hansang:

    #include <bits/stdc++.h>
    using namespace std;
    const int N=5e3+10;
    int a[N], f[2][N], s[N];
    int main(){
        int n; scanf("%d", &n); s[0]=0;
        for(int i=1; i<=n; i++){
            scanf("%d", &a[i]);
            s[i]=s[i-1]+a[i];
        }
        memset(f, 0, sizeof(f));
        int t=0;
        for(int i=n; i>=1; i--){
            t^=1;
            f[t][i]=a[i];
            for(int j=i+1; j<=n; j++){
                f[t][j]=max(s[j]-s[i]-f[t^1][j]+a[i], s[j-1]-s[i-1]-f[t][j-1]+a[j]);
            }
        }
        printf("%d\n", f[t][n]);
        return 0;
    }
    
    • 0
      @ 2025-10-8 17:00:35

      by hansang:

      #include<bits/stdc++.h>
      using namespace std;
      const int N=5e3+10;
      int a[N], f[2][N], s[N];
      int main(){
      	int n; scanf("%d", &n); s[0]=0;
      	for(int i=1; i<=n; i++){
      		scanf("%d", &a[i]);
      		s[i]=s[i-1]+a[i];
      	}
      	memset(f, 0, sizeof(f));
      	int t=0;
      	for(int i=n; i>=1; i--){
      		t^=1;
      		f[t][i]=a[i];
      		for(int j=i+1; j<=n; j++){
      			f[t][j]=max(s[j]-s[i]-f[t^1][j]+a[i], s[j-1]-s[i-1]-f[t][j-1]+a[j]);
      		}
      	}
      	printf("%d\n", f[t][n]);
      	return 0;
      } 
      • 1

      USACO(109)动态规划(区间型)1:金币游戏P3004 [USACO10DEC] Treasure Chest S

      信息

      ID
      2300
      时间
      1000ms
      内存
      512MiB
      难度
      7
      标签
      递交数
      53
      已通过
      14
      上传者