这是2006北大举办的ACM的一道题。

题意为:给定景点海拔高度,队员们不去游览相同高度的景点,一开始往上爬,一但往下爬就不能再向上爬,求最多可以游览多少个景点。那么我们可以得到一个结论:以一个最高点为区分,前面的是最大上升子序列,后面的是最大下降子序列。然后我们就彻底把此传化为了LIS问题。我们开始思考:集合?以峰值为终点的最大子序列长度(一个1-n;一个n~1)。属性?最大值。划分依据与计算?以a[i]结尾的序列a[1],a[2],a[i-1],a[i]里找到a[j]<a[i[,那么状态则可以转化为前面那个数的状态+1,然后与当前进行比较即可。当然当j=0时,dp[i]=1。其次要注意这个反向的时候逆序来求,要再开一个集合。最后枚举峰值点即可。

代码

#include<bits/stdc++.h>
#define maxn 1010
using namespace std;
int dp1[maxn],dp2[maxn];
int n;
int a[maxn];
int main(){
cin>>n;
for(int i=;i<=n;i++){
cin>>a[i];
}
for(int i=;i<=n;i++){
dp1[i]=;
for(int j=;j<i;j++){
if(a[i]>a[j]){
dp1[i]=max(dp1[i],dp1[j]+);
}
}
}
for(int i=n;i>=;i--){
dp2[i]=;
for(int j=n;j>i;j--){
if(a[i]>a[j]){
dp2[i]=max(dp2[i],dp2[j]+);
}
}
}
int res=;
for(int i=;i<=n;i++){
res=max(res,dp1[i]+dp2[i]-);
}
cout<<n;
return ;
}

最新文章

  1. codeigniter框架The URI you submitted has disallowed characters错误解决方法
  2. Android系列--DOM、SAX、Pull解析XML
  3. 将Spark中CompactBuf转换为String
  4. QPS
  5. Head First设计模式-单例模式
  6. C#学习笔记13:静态方法、方法重载和ref、out参数
  7. Linux下的getline函数
  8. html中window对象top 、self 、parent 等属性
  9. 私人定制javascript中函数小知识点
  10. [原]node.js使用感想
  11. mysql数据库-注释相关介绍
  12. Mybatis Dynamic Query 2.0.2
  13. cassandra eclipse 环境构建
  14. 使用Http-Repl工具测试ASP.NET Core 2.2中的Web Api项目
  15. Django ORM中常用字段和参数
  16. Python 基础的应用day2
  17. poj1573模拟
  18. 【bzoj2875】 Noi2012—随机数生成器
  19. oracle 将逗号分隔的字符串转成多行记录
  20. 使用selenium前学习HTML(3)— 属性

热门文章

  1. (编程语言+python+变量名+垃圾回收机制)*知识点
  2. 用python进行服务器的监控
  3. Dell PowerEdge服务器RAID卡驱动下载
  4. Vue_(组件通讯)父子组件简单关系
  5. Centos安装JIRA 7.13版本(自己在官方下载最新版)以及破解
  6. [CSP-S模拟测试]:二叉搜索树(DP+贪心)
  7. 通过merge语句完成表数据同步
  8. UEP的单步测试
  9. flask_sqlalchemy的session线程安全源码解读
  10. 【经验】PHP开发中 &amp;#65279 导致页头一行空白