如果做过cf 13C sequence应该马上就能发现这两道题惊人的相似
但是这题要求严格递增,怎么办呢?
于是有一个神奇的做法
对于a[i],将其减去i,得到新数组b,b数组中只要保证不下降,a就能保证严格递增
于是可以上dp代码了
(dp方程可以看13C sequence)
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define x first #define y second #define mp make_pair #define pb push_back #define LL long long #define Pair pair #define LOWBIT(x) x & (-x) using namespace std; const int INF=0x7ffffff; int n; int a[3048]; vector v; LL dp[3048][3048]; inline int myabs(int x) { return x>=0?x:-x; } int main () { int i,j; scanf("%d",&n); for (i=1;i<=n;i++) { scanf("%d",&a[i]); a[i]-=i; v.pb(a[i]); } sort(v.begin(),v.end()); v.resize(unique(v.begin(),v.end())-v.begin()); for (j=0;j