当前位置: 首页 > news >正文

重庆做网站建设哪家好百度推广后台登录首页

重庆做网站建设哪家好,百度推广后台登录首页,微信公众平台小程序登录,伊春网站建设用二分的思想求最长上升子序列的思想就是保持单调性,用一个q[]数组来作为一个单调数组。 每次将a[i]放进q数组中,但是要保持单调性,q数组的长度就是答案。 q[]数组中存的是所以以下标为长度的最长子序列的结尾的最小值。 理解q[]数组的意义…

用二分的思想求最长上升子序列的思想就是保持单调性,用一个q[]数组来作为一个单调数组。

每次将a[i]放进q数组中,但是要保持单调性,q数组的长度就是答案。

q[]数组中存的是所以以下标为长度的最长子序列的结尾的最小值。

理解q[]数组的意义后那么就可以知道q数组下标从1开始有效。

 

//二分 最大上升子序列
#include<iostream>
using namespace std;
const int N = 1e5 + 9;
int a[N], q[N], n;
//q[]是一个单调数组int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin >> n;for (int i = 0; i < n; ++i) cin >> a[i];int len = 0;q[0] = -2e9;//赋值为最小值,保证不会对结果有影响for (int i = 0; i < n; ++i){int l = 0, r = len;while (l < r){int mid = l + r + 1 >> 1;if (q[mid] < a[i]) l = mid;//找到一个最大且小于a[i]的数else r = mid - 1;}len = max(len, r + 1);//找到之后r + 1就是最大上升序列q[r + 1] = a[i];//a[i]为q[]下一个数的最小的值,因为后面一个数必定大于等于a[i]//所以需要更新他的值}cout << len;return 0;
}

根据上述代码举例,比如找到a[i]找的q[4]就是小于a[i]的最大的数,用因为q[]数组是单调的所以q[5]的值大于等于a[i],这时就可以更新q[5]了,因为q[5]比原先的值小,那么最长子序列的潜力就更大了。

至于二分寻找最大小于a[i]的位置。r先初始化为len的原因就显而易见了,因为就是在q[]数组中寻找嘛!r是找到的位置,r + 1就是应该的最长子序列长度。例如:q[4]为找到的最大小于a[i]的位置,q[r + 1]会被更新成a[i]所以求len时要用r + 1.

http://www.wooajung.com/news/30141.html

相关文章:

  • 创建自己网站的步骤福州百度推广优化排名
  • 广州企业网站建设哪家好软文广告100字
  • 网站代备案管理系统网站推广怎么写
  • 大型网站建设公司太原百度seo
  • 博客系统做网站网站建设7个基本流程
  • 石家庄网站建设策略微信平台推广方法
  • 网站开发前端要学什么国际新闻界期刊
  • java web网站开发结果凤凰网台湾资讯
  • pptseo教程搜索引擎优化
  • 衡水网站制作公司哪家专业防疫管控优化措施
  • 如何搜索易思cms做的网站百度快照
  • 百度网站怎么做的赚钱吗百度seo按天计费
  • 做网站都有备案吗网络推广主要工作内容
  • wordpress自助友链汕头seo公司
  • 杭州网站建设及推广网站seo快速排名优化的软件
  • 高端网站建设企业官网建设seochinaz查询
  • 微信获客crm平台广东网站优化公司
  • ps做网站显示内容参考宁波企业网站seo
  • 西安seo盐城海外aso优化
  • 上海市建设工程安全质量监督总站网站广告资源网
  • 域名解析网站建设厦门人才网官网招聘信息网
  • 没备案的网站怎么做淘客海外营销
  • 建设厅职业资格中心网站揭阳seo快速排名
  • 上门做网站哪里有google搜索入口
  • 广州市提取住房补贴建设银行网站seo基础
  • 企业网站建设套餐黄页网站推广
  • 李沧做网站公司关于进一步优化 广州
  • 网站套利怎么做seo优化服务价格
  • 企业网站制作需要多少费用互联网推广渠道
  • 视频网站开发难点百度一下首页网页百度