题目链接:点击打开链接
题目思路:有点久没写区间dp了,居然在纠结选哪一个作为起点,被自己蠢死,对于这道题来说根本不用关心这个问题,因为区间dp本来就枚举了每一个从小到大的区间,想通这一点,剩下的就很无脑了,唯一需要学习的就是这里用滚动数组优化内存的方法,对于区间dp我们可以发现每一次转移都这跟上一次区间长度有关,也就是用区间长度的递增来递推的,那么就很容易知道前面的长度基本上没什么用了,所以可以用滚动数组,另外用滚动数组的时候还是不要用刷表法好。。不好处理
无滚动数组版本:
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstring>
#include<iostream>
#include<sstream>
#include<cmath>
#include<vector>
#define LL long long
#define INF 0x3f3f3f3f
#define eps 1e-6
using namespace std;
const int maxn = 1e7+6;
int dp[10000+5][10000+5][2];
int n,m;
int a[10000+5];
int b[10000+5];
int main()
{
while(~scanf("%d",&n)){
for(int i = 1;i<=n;i&#