2017金马五校赛 F.A序列(LIS)
来源:互联网 发布:警惕网络陷阱教学设计 编辑:程序博客网 时间:2024/06/04 01:14
题目传送门
思路:求A序列(先是单调递增然后单调递减),相当于求当前位置的最长递增子序列和反方向的最长递增子序列,取其中小的乘以2减1就是最长的A序列。就是求两次LIS问题,然后遍历找最大A序列。
下面是代码:
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<stack>#include<algorithm>using namespace std;int num[500005],n,k;int dp[2][500005],ans;int x[500005];int main(){ while(~scanf("%d",&n)) { int k=0,ans=0,flag=1; for(int i=0;i<n;i++) { scanf("%d",&num[i]); } x[1]=num[0]; k=1; dp[0][0]=1; for(int i=1;i<n;i++) { if(x[k]<num[i]) { x[++k]=num[i]; dp[0][i]=k; } else { for(int j=1;j<=k;j++) { if(x[j]>=num[i]) { dp[0][i]=j; x[j]=num[i]; break; } } } //cout<<dp[0][i]<<' '; } //cout<<endl; x[1]=num[n-1]; k=1; dp[1][n-1]=1; for(int i=n-2;i>=0;i--) { if(x[k]<num[i]) { x[++k]=num[i]; dp[1][i]=k; } else { for(int j=1;j<=k;j++) { if(x[j]>=num[i]) { dp[1][i]=j; x[j]=num[i]; break; } } } //cout<<dp[1][i]<<' '; } //cout<<endl; ans=0; for(int i=0;i<n;i++) ans=max(ans,min(dp[0][i],dp[1][i])); printf("%d\n",ans*2-1); }}
阅读全文
2 0
- 2017金马五校赛 F.A序列(LIS)
- A序列(最长上升子序列 金马五校赛-上海大学)
- shu415 A序列 lis
- 【“盛大游戏杯”第15届上海大学程序设计联赛 F】【LIS模板题】A序列
- 2017 -金马五校程序设计竞赛-A
- A序列“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛
- 2017金马五校赛 K.购买装备(二分)
- 2017金马五校赛 M.风力观测(线段树)
- 子序列(LIS、LCS)
- 最长上升序列(Lis)
- 2017年上海金马五校赛 解题报告
- 2017上海金马五校赛 丢史蒂芬妮 博弈问题
- 2017上海金马五校程序设计竞赛 A :STEED Cards
- Sailing(BFS 金马五校赛-东华大学 )
- 神无月排位赛(模拟 金马五校赛-上海大学)
- 2017年上海金马五校程序设计竞赛(网上资格赛)Problem A : Corn's new language
- 2017年上海金马五校程序设计竞赛(网上资格赛)Problem A : Corn's new language
- 2017年上海金马五校程序设计竞赛(网上资格赛)Problem A : Corn's new language
- bzoj 4724: [POI2017]Podzielno 数学
- 使用test指令判断变量是否为0
- 未来币-概念介绍-资产Assets
- ActionBar设置自定义setCustomView()留有空白的问题
- eclipse版本和jdk对应关系
- 2017金马五校赛 F.A序列(LIS)
- 66. Plus One
- 剑指offer--面试题15:二进制中1的个数
- 钉钉微应用接入(企业内部开发)
- 简单理解src和ng-src
- Attention-based Extraction of Structured Information from Street View Imagery
- MPAndroidChart 画柱状图,线等统计图。
- shell read处理用户输入示例讲解
- 开发环境、生产环境、测试环境的基本理解和区别