博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj千题计划316:bzoj3173: [Tjoi2013]最长上升子序列(二分+树状数组)
阅读量:4449 次
发布时间:2019-06-07

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

 

插入的数是以递增的顺序插入的

这说明如果倒过来考虑,那么从最后一个插入的开始删除,不会对以某个数结尾的最长上升子序列产生影响

所以 先原序列求出来,输出即可

 

还原原序列的方法:

可以用平衡树,dfs序就是原序列

嫌麻烦,不想写,所以  树状数组

假设最后一个数是n,插入位置是y,

倒数第二个数是n-1,插入位置是x

那么y就是n的最终位置

如果y在x后面,那么x就是n-1的最终位置

如果y在x前面,那么x+1就是n-1的最终位置

所以 如果倒序插入每个数,

若数m的插入位置为p,

数m的最终位置就是当前序列 的 第p个空位

这可以二分+树状数组确定 数m的位置 

 

注意求LIS时,求出的f[i] 时 以i结尾的LIS

要求回答 序列的LIS,所以要跟f[i-1]取大

 

#include
#include
#include
using namespace std;#define N 100001#define lowbit(x) x&-xint n;int p[N];int c[N];int a[N];int dp[N],m;int f[N];void read(int &x){ x=0; char c=getchar(); while(!isdigit(c)) c=getchar(); while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }} void add(int pos,int x){ while(pos<=n) { c[pos]+=x; pos+=lowbit(pos); }}int query(int x){ int sum=0; while(x) { sum+=c[x]; x-=lowbit(x); } return sum;}int find(int x){ int l=1,r=n,mid,tmp; while(l<=r) { mid=l+r>>1; if(mid-query(mid)>=x) tmp=mid,r=mid-1; else l=mid+1; } return tmp;}void init(){ read(n); for(int i=1;i<=n;++i) read(p[i]); int pos; for(int i=n;i;--i) { pos=find(p[i]+1); a[pos]=i; add(pos,1); }}void pre_LIS(){ dp[m=1]=a[1]; f[a[1]]=1; int pos; for(int i=2;i<=n;++i) { if(a[i]>dp[m]) { dp[++m]=a[i]; f[a[i]]=m; } else { pos=lower_bound(dp+1,dp+m+1,a[i])-dp; if(a[i]

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8978474.html

你可能感兴趣的文章
ios获取ip地址
查看>>
树莓派卸载安装oracle-java8-jdk
查看>>
用 Delphi 学设计模式(二) 之 工厂方法篇
查看>>
Java8函数之旅 (二) --Java8中的流
查看>>
POJ 2139 SIx Degrees of Cowvin Bacon 最短路 水題
查看>>
JavaScript面向对象(OOP)语法
查看>>
java面试题(基础+非基础)[不定期更新]
查看>>
程序员玩转投资 - 基金定投的7个缺点和误区
查看>>
使用 WordPress 的导航菜单
查看>>
input只能输入数字和小数点,并且只能保留小数点后两位 - CSDN博客
查看>>
js 不固定传参
查看>>
Linux信号
查看>>
iOS中的NSdate
查看>>
Netty--数据通信和心跳检测
查看>>
liunx环境下安装mysql5.7及以上版本
查看>>
远程调试UWP遇到新错误Could not generate the root folder for app package ......
查看>>
eclipse配置maven
查看>>
CentOS Docker 安装
查看>>
[原创]java WEB学习笔记13:JSP介绍(背景,特点,原理)
查看>>
[原创]java WEB学习笔记54:Struts2学习之路--- 编写Struts2 的第一个程序,HelloWord,简述 package ,action,result...
查看>>