博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uva 10534 波浪子序列
阅读量:5827 次
发布时间:2019-06-18

本文共 1114 字,大约阅读时间需要 3 分钟。

题目链接:

题意:

求一个奇数长的子序列,前一半严格递增,后一半严格递减;O(nlogn)

 

分析:

再次复习一下LIS算法;

严格递增:

g[k] : d[]值为 k 的最小元素,由于是严格递增,也就是说二分下界low_bound;

最长不下降:

也就是说upper_bound;

解析:二分函数,返回值是[L,R),也就是说不下降的时候,就是在后面插入一个;

1 #include 
2 3 using namespace std; 4 5 const int inf = 0x3f3f3f3f; 6 const int maxn = 10000 + 5; 7 int a[maxn]; 8 int b[maxn]; 9 int d[maxn];10 int p[maxn];11 12 int g[maxn];13 14 int main()15 {16 int n;17 while(scanf("%d",&n)!=EOF) {18 for(int i=0;i
a[j])29 // d[i] = max(d[i],d[j]+1);30 //}31 32 memset(g,inf,sizeof(g));33 for(int i=0;i
=0;i--) {40 // for(int j=n-1;j>i;j--) {41 // if(a[i]>a[j])42 // p[i] = max(p[i],p[j]+1);43 // }44 //}45 memset(g,inf,sizeof(g));46 for(int i=n-1;i>=0;i--) {47 int k = lower_bound(g+1,g+n+1,a[i])-g;48 p[i] = k;49 g[k] = a[i];50 }51 52 int ans = 1;53 for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/TreeDream/p/6777253.html

你可能感兴趣的文章
iOS 解决UITabelView刷新闪动
查看>>
CentOS 7 装vim遇到的问题和解决方法
查看>>
JavaScript基础教程1-20160612
查看>>
ios xmpp demo
查看>>
python matplotlib 中文显示参数设置
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
re:Invent解读:没想到你是这样的AWS
查看>>
PyTips 0x02 - Python 中的函数式编程
查看>>
使用《Deep Image Prior》来做图像复原
查看>>
Linux基础命令---rmdir
查看>>
Android图片添加水印图片并把图片保存到文件存储
查看>>
开源 免费 java CMS - FreeCMS1.2-标签 infoSign
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
FreeMarker-Built-ins for strings
查看>>
argparse - 命令行选项与参数解析(转)
查看>>