分析:

真是石乐志的一道题目啊。。。。

这题我考场上现推的DP和官方题解一点关系都没有。。。。

还是说说官方题解的做法吧

它把最长不下降子序列映射成两个序列的最长公共子序列问题
a序列就是给出的原序列
b序列是值域的序列
需要注意的是:b序列可以重复匹配

一般的最长不下降子序列中,b序列就是:0,1,2,3,4,5,6,7,8,9
这样a和b的最长公共子序列就是一个最长不下降子序列。

然后这题它说可以翻转一次。我们发现如果在a序列中枚举翻转端点是很难实现的。但可以在b序列上枚举翻转端点(最多C(10,2)C(10,2)C(10,2)种方案)。
换句话说,我们可以枚举翻转的两个端点的值。
然后,b序列可以转化成这个样子:
假设我们枚举的翻转的左端点值为yyy,右端点值为x" role="presentation" style="position: relative;">xxx,满足x<yx<yx
b序列就可以变成:
0,1,2,……x−1,x,(y,y−1,y−2,……,x+1,x),y,y+1,……8,90,1,2,……x−1,x,(y,y−1,y−2,……,x+1,x),y,y+1,……8,90,1,2,……x-1,x,(y,y-1,y-2,……,x+1,x),y,y+1,……8,9其中括号内的部分可以通过翻转使得整个串仍然是一个0到9的不下降序列。

然后转移随便写写就可以了。。。
注意不要memset,容易超时

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define SF scanf
#define PF printf
#define MAXN 100010
using namespace std;
int n,t;
char s[MAXN];
int b[MAXN],spl,spr,ansl,ansr;
int dp[MAXN][22],tl[MAXN][22],tr[MAXN][22];;
int solve(int cnt){//memset(tl,0,sizeof tl);//memset(tr,0,sizeof tr);for(int i=0;i<cnt;i++)dp[0][i]=0;for(int i=1;i<=n;i++)for(int j=0;j<cnt;j++){dp[i][j]=dp[i-1][j];tl[i][j]=tl[i-1][j];tr[i][j]=tr[i-1][j];if(s[i]==b[j]){dp[i][j]++;if(spl==j&&tl[i][j]==0)tl[i][j]=i;if(spr==j)tr[i][j]=i;}if(dp[i][j-1]>dp[i][j]){dp[i][j]=dp[i][j-1];tl[i][j]=tl[i][j-1];tr[i][j]=tr[i][j-1];}}return dp[n][cnt-1];
}
int main(){freopen("1008.in","r",stdin);int t;SF("%d",&t);    while(t--){SF("%d",&n);SF("%s",s+1);int minl=9;int maxl=0;for(int i=1;i<=n;i++){s[i]-='0';maxl=max(maxl,int(s[i]));minl=min(minl,int(s[i]));}for(int i=0;i<10;i++)b[i]=i;int ans=solve(10);ansl=1;ansr=1;for(int l=minl;l<=maxl;l++)for(int r=minl;r<l;r++){int cnt=0;for(int i=0;i<=r;i++)b[cnt++]=i;spl=cnt;for(int i=l;i>=r;i--)b[cnt++]=i;spr=cnt-1;for(int i=l;i<10;i++)b[cnt++]=i;int ans1=solve(cnt);if(ans1>ans&&tl[n][cnt-1]&&tr[n][cnt-1]){ans=ans1;ansl=tl[n][cnt-1];ansr=tr[n][cnt-1];  }}PF("%d %d %d\n",ans,ansl,ansr);}}

【DP】HDU6357 Hills And Valleys相关推荐

  1. 【DP】【期望】$P1850$换教室

    [DP][期望]\(P1850\)换教室 链接 题目描述 有 \(2n\) 节课程安排在$ n$ 个时间段上.在第 \(i\)(\(1 \leq i \leq n\))个时间段上,两节内容相同的课程同 ...

  2. Bailian2760 数字三角形【DP】

    2760:数字三角形 描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (图1) 图1给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可 ...

  3. NUC1131 Triangle【DP】

    Triangle 时间限制: 1000ms 内存限制: 65536KB 通过次数: 1总提交次数: 1 问题描述 图1表示一个数字三角形. 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 ...

  4. LeetCode:完全平方数【279】【DP】

    LeetCode:完全平方数[279][DP] 题目描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示 ...

  5. 【DP】序列 题解

    [DP]序列 题解 序列 题目 一个长度为kkk的整数序列bbb 1,bbb 2,-,bkbkbk(1≤bbb 1≤bbb 2≤-≤bkbkbk≤NNN)称为"好序列"当且仅当后一 ...

  6. poj 2411 Mondriaan#39;s Dream 【dp】

    题目:poj 2411 Mondriaan's Dream 题意:给出一个n*m的矩阵,让你用1*2的矩阵铺满,然后问你最多由多少种不同的方案. 分析:这是一个比較经典的题目.网上各种牛B写法一大堆. ...

  7. BestCoder冠军赛 - 1005 Game 【DP】

    [题意] 给出一个set,set中有几个数. 现在给出n个人,环成一圈搞约瑟夫... 开始时从第1号报数,每次从set中随机选出一个数s,等报数到s后,报s的人出圈,其他人继续报数. 最后只剩1人时, ...

  8. 【9.22校内测试】【可持久化并查集(主席树实现)】【DP】【点双联通分量/割点】...

    1 build 1.1 Description 从前有一个王国,里面有n 座城市,一开始两两不连通.现在国王将进行m 次命令,命令可 能有两种,一种是在u 和v 之间修建道路,另一种是询问在第u 次命 ...

  9. zzuliOJ 1894: 985的方格难题 【dp】

    1894: 985的方格难题 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 369  Solved: 75 Description 985走入了一个n ...

  10. 【DP】【单调队列】【NOI2005】瑰丽华尔兹

    340. [NOI2005] 瑰丽华尔兹 ★★★ 输入文件:adv1900.in 输出文件:adv1900.out 简单对照 时间限制:1 s 内存限制:128 MB [任务描写叙述] 你跳过华尔兹吗 ...

最新文章

  1. HDU 3549 Flow Problem(最大流模版EK算法)
  2. 沃尔沃加入英伟达阵营 2021年开卖自动驾驶汽车
  3. STL中的双向队列deque
  4. 实现超长焦梦想的捷径——试用适马150-500毫米F5-6.3 OS镜头
  5. xcart-子分类/语言不显示
  6. Windows Azure Marketplace增加对六种语言和HTML5应用程序的支持
  7. 突破极限–如何将AeroGear Unified Push用于Java EE和Node.js
  8. 关于Redis配置主从复制踩到的坑,主机不显示从机的连接信息
  9. LED的本质和发光原理是什么,彩色的LED灯是怎么做出来的
  10. SIP呼叫中关于PRACK的使用
  11. Spotfire 连接mysql数据库
  12. liteide使用教程 linux,liteide下载-LiteIDE(Go语言开发工具) 附使用教程 X30.3 中文免安装版 - 河东下载站...
  13. mac os 下 打开 JXM 文件
  14. html5 cuplayer,PlayerLite免费flv与mp4网页视频播放器
  15. 计算机网络有哪三种地址,IP地址的分类有哪几种
  16. 【Pigeon源码阅读】RPC底层通信实现原理(八)
  17. android视频壁纸源码,Android视频壁纸的实现
  18. macOS iOS 完整项目之全功能RSS阅读器 (教程含源码)
  19. 记录一次centos被挖矿病毒感染的经历
  20. win8电脑打不开html文件,Win8网页打不开qq能上_Win8能上qq打不开网页怎么办?-192路由网...

热门文章

  1. CSMA/CA精辟总结
  2. 在命令行cmd 下,输入dxdiag 查看关于电脑许多硬件的详细信息
  3. VC编程调用dxdiag生成XML文件,来获取系统配置情况
  4. 【UE4】获取13位时间戳
  5. marked转换html失败,解析markdown之marked
  6. 淘宝海量数据产品技术架构
  7. [渝粤教育] 西北农林科技大学 国际贸易实务 参考 资料
  8. 不打开Wifi获取Mac地址
  9. 数字化转型:信息系统的生命周期(一)
  10. Dart 实现字符串 进行 gbk编码的 urlencode