不考虑具体怎么拿,只考虑每层拿到几个。用f[i][j]存第i层拿了j个时的最大价值,求的方式是去掉一段连续的值之后剩余的最大价值。要说的代码里都有注释了。 #include<bits/stdc++.h> #define fi first #define se second #define pb(i) push_back(i) #define rep(i,a,b) for(int i=a;i<=b;i++) #define per(i,a,b) for(int i=b;i>=a;i--) #define mem(a,b) memset(a,b,sizeof(a)) #de...