[bzoj1068]压缩[区间动规]

时间:2023-03-09 17:23:45
[bzoj1068]压缩[区间动规]

看了lujiaxin的blog,感觉自己好浪啊。。。。好难过

刷题的时候不够投入,每种算法都是只写一两道就过去了,这样怎么可能进步嘛

不要总是抱怨时间太少了 都是自己不努力>_<

好啦 看题

n<=50的范围,记忆化。。。N^3

f[a][b][t]表示a~b这段区间内,有没有M的最短答案。

枚举断点(很重要的思想),当T==1,显然左边右边都dp一下;(think clearly)

然后,看看左边能不能被压缩,这一句很重要,因为如果区间内没有M的话,它只能是最左边复制呀复制,所以可以保证正确性;

标算思路好严谨啊,感觉自己DP能力还要多学习

PS.submit的时候看到别人在做3110,代码真心很短的树套树,好想写啊~

月考加油啦~\(≧▽≦)/~

#include<cstdio>
#include<algorithm>
#include<cstring>
];][][],mark[][][];
using namespace std;
bool same(int a,int b)
{
  ;==);
  ;i++)
   ]);
  ;
}
int dp(int a,int b,int t)
{
  ,l=b-a+;);
  ;
  ))+dp(i+,b,)+);
  for(int i=a;i<b;i++)tmp=min(tmp,dp(a,i,t)+b-i);
  ,)+);
  f[a][b][t]=tmp;return tmp;
}
int main()
{
  scanf();
  );
  printf(,len,));
}