2 条题解
-
0
#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
#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
信息
- ID
- 2292
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 29
- 已通过
- 9
- 上传者