2 条题解

  • 0
    @ 2025-10-8 17:00:42
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    const int N=1010, M=35;
    LL f[N][M], a[N];
    int main(){
    	int n, m; scanf("%d%d", &n, &m);
    	for(int i=1; i<=n; i++){
    		scanf("%d", &a[i]);
    	}
    	memset(f, 0, sizeof(f));
    	for(int i=0; i<=m; i++) f[0][i]=0;
    	for(int i=1; i<=n; i++){
    		for(int j=0; j<=m; j++){
    			f[i][j]=f[i-1][j];
    			if(j!=0) f[i][j]=max(f[i][j], f[i-1][j-1]);
    			if(a[i]==(j%2+1)) f[i][j]++;
    		}
    	}
    	LL ans=0;
    	for(int i=0; i<=m; i++) 
    		ans=max(ans, f[n][i]);
    	printf("%lld\n", ans);
    	return 0;
    }
    
    • 0
      @ 2025-10-8 17:00:33
      #include<bits/stdc++.h>
      using namespace std;
      typedef long long LL;
      const int N=1010, M=35;
      LL f[N][M], a[N];
      int main(){
      	int n, m; scanf("%d%d", &n, &m);
      	for(int i=1; i<=n; i++){
      		scanf("%d", &a[i]);
      	}
      	memset(f, 0, sizeof(f));
      	for(int i=0; i<=m; i++) f[0][i]=0;
      	for(int i=1; i<=n; i++){
      		for(int j=0; j<=m; j++){
      			f[i][j]=f[i-1][j];
      			if(j!=0) f[i][j]=max(f[i][j], f[i-1][j-1]);
      			if(a[i]==(j%2+1)) f[i][j]++;
      		}
      	}
      	LL ans=0;
      	for(int i=0; i<=m; i++) 
      		ans=max(ans, f[n][i]);
      	printf("%lld\n", ans);
      	return 0;
      } 
      • 1

      USACO(100)动态规划一1:接住苹果P2690 [USACO04NOV] Apple Catching G

      信息

      ID
      2292
      时间
      1000ms
      内存
      128MiB
      难度
      7
      标签
      递交数
      29
      已通过
      9
      上传者