博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 481 - What Goes Up
阅读量:6049 次
发布时间:2019-06-20

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

  题目大意:给你一系列数,找出它的最长(严格)递增子序列。

  由于数据量较大,使用O(n2)的LIS算法会超时,要使用O(nlogn)的LIS算法,有详细的介绍。

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 typedef vector
vi; 7 8 vi v, temp, pos, ans; 9 10 int main()11 {12 #ifdef LOCAL13 freopen("in", "r", stdin);14 #endif15 int x;16 while (scanf("%d", &x) != EOF)17 v.push_back(x);18 temp.push_back(v[0]);19 pos.push_back(1);20 for (int i = 1; i < v.size(); i++)21 {22 x = v[i];23 if (x > temp.back())24 {25 temp.push_back(x);26 pos.push_back(temp.size());27 }28 else29 {30 vi::iterator it = lower_bound(temp.begin(), temp.end(), x);31 *it = x;32 pos.push_back(it-temp.begin()+1);33 }34 }35 for (int p = pos.size()-1, len = temp.size(); p >=0 && len > 0; p--)36 if (pos[p] == len)37 {38 ans.push_back(v[p]);39 len--;40 }41 cout << ans.size() << endl << '-' << endl;42 for (int i = ans.size()-1; i >= 0; i--)43 cout << ans[i] << endl;44 return 0;45 }
View Code

 

转载于:https://www.cnblogs.com/xiaobaibuhei/p/3304280.html

你可能感兴趣的文章
2016开发一个app需要多少钱?app开发需要哪些成本-app开发问题汇总-广州达到信息...
查看>>
程序找不到jvm的解决方法
查看>>
Java中Volatile的理解
查看>>
c++primer page 249 answer
查看>>
04单例模式Singleton
查看>>
SSE图像算法优化系列六:OpenCv关于灰度积分图的SSE代码学习和改进。
查看>>
找考场
查看>>
暑假第一周进度总结(2018.7.9-2018.7.15)
查看>>
数据库程序接口——JDBC——功能第一篇——第一个程序
查看>>
NSOperation简单使用01
查看>>
javascript获取事件源对象和产生事件的对象
查看>>
iOS控件之UITextView
查看>>
第三次会议
查看>>
UNIX的套接口(Socket)编程简介
查看>>
CSF 中的应用程序请求路由
查看>>
Programming Ability Test学习 1035. 插入与归并(25)
查看>>
curl_multi_init 操作实例
查看>>
vue-swiper的使用
查看>>
RDLC设计
查看>>
bs4爬虫的一点心得----坑
查看>>