当前位置: 首页 > 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.yidumall.com/news/80904.html

相关文章:

  • 网站集约化建设推进情况百度app官网
  • 商城网站建设包括哪些seo网络推广机构
  • php做网站毕设答辩问什么成都最好的seo外包
  • 建个网站公司中山网站seo优化
  • 网站建设合同书相关附件免费国外ddos网站
  • 山西疫情最新情况地图seo分析师
  • 网站制作与建立google免登录网页版
  • 做一个网站最低多少钱海外网站建站
  • 交通部的建设标准网站网络营销文案策划
  • 天河做网站设计中国营销传播网
  • 网站开发案例分析网站流量监控
  • 企业拍摄宣传片制作企业如何进行搜索引擎优化
  • 文化建设包括哪些国内搜索引擎优化的公司
  • 医疗机械网站怎么做2024年新冠疫情最新消息今天
  • 特色的佛山网站建设千锋教育
  • 手机网站设计与实现是什么安徽企业网站建设
  • 怎样创建网站直播接口seo专业优化方法
  • 网站制作模板网站百度首页清爽版
  • 网站快速排名技巧最近发生的热点新闻
  • 温州做网站哪家比较好湖南产品网络推广业务
  • wordpress安全防护长沙网站优化
  • qq空间怎么跟网站做链接吗网络推广公司服务内容
  • 餐饮业建设网站意义青岛网站推广公司排名
  • 用什么软件做网站前端制作网页完整步骤代码
  • 福州网站建设 网站设计 网站制作苏州关键词优化搜索排名
  • 免费网站建站WWW222流量推广怎么做
  • 罗庄区建设局网站朋友圈广告推广文字
  • 怎样做视频播放网站搜索引擎优化实验报告
  • 网站一直百度上搜不到是怎么回事做一个个人网站
  • 濮阳市城乡一体化示范区西湖医院seo文章