LIS&&LCS&&LCIS
LIS
#include<bits/stdc++.h>
using namespace std;
int n,a[100005],b[100005],ji;
int main(){
cin>>n;
for(int i=1;i<=n;i++){cin>>a[i];}
b[++ji]=a[1];
for(int i=2;i<=n;i++){
if(a[i]>b[ji]){
b[++ji]=a[i];
continue;
}
int mid,l=1,r=ji;
while(l<r){
mid=(l+r)>>1;
if(b[mid]>=a[i]) r=mid;//因为要将a[i]插入到b中,且插入位置保证b[mid]>=a[i],所以>a[i]也可能是答案
else l=mid+1;
}
b[l]=a[i];
}
cout<<ji;
}
LCS
#include<bits/stdc++.h>
using namespace std;
int n,a[100005],b[100005],f[100005],c[100005],ji;
int main(){
cin>>n;
for(int i=1;i<=n;i++){cin>>a[i];c[a[i]]=i;}
for(int i=1;i<=n;i++)cin>>b[i];
f[++ji]=c[b[1]];
for(int i=2;i<=n;i++){
if(c[b[i]]>f[ji]){
f[++ji]=c[b[i]];
continue;
}
int mid,l=1,r=ji;
while(l<r){
mid=(l+r)>>1;
if(f[mid]>=c[b[i]])r=mid;
else l=mid+1;
}
f[l]=c[b[i]];
}
cout<<ji;
}
LCIS
#include<bits/stdc++.h>
using namespace std;
int n,a[3005],b[3005],f[3005][3005],maxn;
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)cin>>b[i];
for(int i=1;i<=n;i++){
int val=0;
// if(b[])
for(int j=1;j<=n;j++){
if(a[i]==b[j]){
f[i][j]=val+1;
maxn=maxn>f[i][j]?maxn:f[i][j];
}
else f[i][j]=f[i-1][j];
if(b[j]<a[i])val=max(val,f[i-1][j]);//???????
maxn=maxn>f[i][j]?maxn:f[i][j];
}
}
cout<<maxn;
}
LIS&&LCS&&LCIS的更多相关文章
- LIS+LCS+LCIS
PS:本篇博文均采用宏#define FOR(i, a, n) for(i = a; i <= n; ++i) LIS:最长上升子序列 废话不多说:http://baike.baidu.com/ ...
- 8.3 LIS LCS LCIS(完结了==!)
感觉这个专题真不好捉,伤心了,慢慢啃吧,孩纸 地址http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28195#overview 密码 ac ...
- LIS LCS LCIS (主要过一遍,重在做题)
只详细讲解LCS和LCIS,别的不讲-做题优先. 菜鸟能力有限写不了题解,可以留评论,我给你找博客. 先得理解最长上升子序列吧,那个HDOJ拦截导弹系列可以做一下,然后用o(n)log(n)的在做一遍 ...
- LIS && LCS && LCIS && LPS && MCS模板
1. LIS (Longest Increasing Subsequence) O (n^2): /* LIS(Longest Increasing Subsequence) 最长上升子序列 O (n ...
- 线性DP总结(LIS,LCS,LCIS,最长子段和)
做了一段时间的线性dp的题目是时候做一个总结 线性动态规划无非就是在一个数组上搞嘛, 首先看一个最简单的问题: 一,最长字段和 下面为状态转移方程 for(int i=2;i<=n;i++) { ...
- LIS LCS n^2和nlogn解法 以及LCIS
首先介绍一下LIS和LCS的DP解法O(N^2) LCS:两个有序序列a和b,求他们公共子序列的最大长度 我们定义一个数组DP[i][j],表示的是a的前i项和b的前j项的最大公共子序列的长度,那么由 ...
- LIS和LCS LCIS
首先介绍一下LIS和LCS的DP解法O(N^2) LCS:两个有序序列a和b,求他们公共子序列的最大长度 我们定义一个数组DP[i][j],表示的是a的前i项和b的前j项的最大公共子序列的长度,那么由 ...
- LIS,LCS,LICS 学习笔记
1.最长上升子序列(LIS) 子序列: 1.可以不连续 2.相对位置不变 dp[i][j] 表示前i位置,最大值为j的LIS长度 1. dp[i-1][j] 前i-1位置,最大值为j的LIS长度 (没 ...
- dp入门(LIS,LCS)
LCS
随机推荐
- Java 中初始化 List 集合的 7 种方式
1.常规方式 List<String> languages = new ArrayList<>(); languages.add("Java"); lang ...
- IDEA中运行测试方法
1. 2. 3. 4. 5.
- sql 单表distinct/多表group by查询去除重复记录
单表distinct 多表group by group by 必须放在 order by 和 limit之前,不然会报错 下面先来看看例子: table id name 1 a 2 b ...
- kubernetes集群部署高可用Postgresql的Stolon方案
目录 前言 ....前言 本文选用Stolon的方式搭建Postgresql高可用方案,主要为Harbor提供高可用数据库,Harbor搭建可查看kubernetes搭建Harbor无坑及Harbor ...
- ubuntu连接window系统
最后可以通过次命令挂载本地文件夹到远程电脑: rdesktop -a 24 -f -r disk:share-name=/home/lion/.m2/ 192.168.151.232
- charles 重写工具/rewrite Srttings
本文参考:charles 重写工具 rewrite Srttings 重写工具/rewrite Srttings and rewrite rule 功能:在通过charles时修改请求和响应 重写工具 ...
- [C++] 空间配置器——allocator类
1.new和delete有一些灵活性上的局限:new把内存分配和对象构造组合在了一起:delete将对象析构和内存释放组合在了一起. 2.当分配一大块内存时,我们通常计划在这块内存上按需构造对象, ...
- JavaScript之深入对象(二)
上一篇随笔讲解了构造函数.原型及原型链相关的知识,今天让我们一起来探讨另一个问题:this. 一 this 的指向 1, 函数预编译过程中,this指向window 我们在讲解函数预编译过程 ...
- RabbitMQ的六种工作模式总结
最近学习RabbitMQ的使用方式,记录下来,方便以后使用,也方便和大家共享,相互交流. RabbitMQ的六种工作模式: 1.Work queues2.Publish/subscribe3.Rout ...
- 【Python笔记】Python变量类型
Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...