题目大意:给你一个序列,你可以翻转任意一段子序列一次,求最长不下降子序列长度

tips:子序列可以不连续,但不能破坏在原序列中的顺序

观察数据范围,n<=50,很小,考虑dfs

*dfs来跑区间dp可以巧妙的解决区间两端元素的置换问题

记忆化搜索,f[i][j][l][r] 代表对于区间[i,j],构成最长不下降子序列的元素值域在[l,r]时,最长不下降子序列的长度

注意特判端点

 #include <bits/stdc++.h>
#define N 55
#define inf 0x3f3f3f3f
using namespace std; int n,m;
int a[N],f[N][N][N][N];
int dfs(int i,int j,int l,int r)
{
int ans=-;
if(f[i][j][l][r]!=-) {return f[i][j][l][r];}
if(l>r) {return -;}
if(i>j) {return ;}
if(i==j&&l<=a[i]&&a[i]<=r) {f[i][j][l][r]=;return ;}
if(i==j&&(a[i]<l||a[i]>r)) {f[i][j][l][r]=;return ;}
ans=max(ans,dfs(i+,j,l,r));
ans=max(ans,dfs(i,j-,l,r));
ans=max(ans,dfs(i+,j-,l,r));
if(l<=a[i]&&a[i]<=r) {ans=max(ans,dfs(i+,j,a[i],r)+);}
if(l<=a[j]&&a[j]<=r) {ans=max(ans,dfs(i,j-,l,a[j])+);}
if(l<=a[i]&&a[i]<=a[j]&&a[j]<=r) {ans=max(ans,dfs(i+,j-,a[i],a[j])+);} if(l<=a[j]) {ans=max(ans,dfs(i+,j-,a[j],r)+);}
if(a[i]<=r) {ans=max(ans,dfs(i+,j-,l,a[i])+);}
if(r>=a[i]&&a[i]>=a[j]&&a[j]>=l) {ans=max(ans,dfs(i+,j-,a[j],a[i])+);}
f[i][j][l][r]=max(,ans);
return ans;
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{scanf("%d",&a[i]);}
memset(f,-,sizeof(f));
printf("%d",dfs(,n,,));
return ;
}

最新文章

  1. sql存储过程几个简单例子
  2. vs2010:fatal error LNK1123: 转换到 COFF 期间失败
  3. [OrangePi] Backup internal EMMC to SD Card
  4. [转载] C++ typedef 用法详解
  5. .net 下的MVCPager
  6. Android开发之切换activity动画overridePendingTransition
  7. display:table- cell属性的练习
  8. Cocos2dx 3.0 过渡篇(三十)灰机还是3D好(Sprite3D)
  9. 【BZOJ4237】稻草人(CDQ分治,单调栈)
  10. java学习笔记37(sql工具类:JDBCUtils)
  11. 将tomcat添加为linux系统服务
  12. LOJ500 ZQC的拼图 二分答案、DP
  13. Ajax跨域访问解决方案
  14. 排查java进程cpu占用高的问题
  15. java理论学时第七节。课后作业。
  16. 微信小程序——template的使用方法
  17. 判断当前用户有无Administrator的权限
  18. 从0开始学习Unity的学习笔记(I 界面学习和简单模型拼装)
  19. tkinter事件高级用法实例
  20. 【CodeForces】870 F. Paths

热门文章

  1. PHP 一句话木马
  2. [bzoj2662 BeiJing wc2012] 冻结 (分层图+最短路)
  3. base64 编码的作用及原理
  4. position:fixed div如何居中
  5. Charles抓包工具抓取HTTS请求
  6. OA项目知识总结
  7. CentOs下安装图形界面
  8. [Beginning SharePoint Designer 2010]Chapter5 主题和样式
  9. Core Dataeasy出现的错误
  10. [GraphQL] Mutations and Input Types