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
随机推荐
- [1]尝试用Unity3d制作一个王者荣耀(持续更新)->选择英雄-(上)
如果已经看过本章节:目录传送门:这是目录鸭~ 1.场景搭建: 首先我们去AssetStore逛淘宝~~~ 我淘到的是这个资源,其他好看的场景(消耗不高的都行). 然后我们导入了这个资源后,把资源根文件 ...
- PathMarker:命令行快速编辑跳转工具(配合git,find等)
简介 当使用git, find等工具时,一般需要进一步打开文件或跳转目录. 通常的做法是使用鼠标复制黏贴,或者手工输入. PathMarker提供一种快速通过标号,编辑相关文件,跳转相关目录的方法,提 ...
- 渗透之路基础 -- 服务端请求伪造SSRF
简介:SSRF 服务器端请求伪造,有的大型网站在web应用上提供了从其他服务器获取数据的功能.使用户指定的URL web应用获取图片,下载文件,读取文件内容.通常用于控制web进而探测内网服务以及攻击 ...
- JAVA内存模型与JVM内存结构
问题:什么事java内存模型? 首先呢不要答堆.栈.方法区.这是JVM的内存结构.下面阐述了JMM和JVM的区别和自己对JMM的见解 1.Java内存模型(JMM):即多线程相关的.定义了一个线程对另 ...
- Git客户端下载
链接:http://pan.baidu.com/s/1eRXsITO 密码:4i6e
- 编写优雅代码,从挖掉恶心的if/else 开始
背景 长话短说, 作为开发人员经常需要根据条件灵活查询数据库,不管你是用rawsql 还是EFCore, 以下类似伪代码大家都可能遇到: /// <summary> /// 灵活查询 能耗 ...
- 《Java7并发编程实战手册》读书笔记
一.线程管理 1.线程的创建和运行 创建线程的2种方式: 继承Thread类,并覆盖run()方法 创建一个实现Runnable接口的类.使用带参数的Thread构造器来创建Thread对象 每个Ja ...
- SpringBoot和Hibernate整合
1.先使用idea创建maven项目(这个就不详细讲了,很简单的操作) 2.创建完maven项目之后添加springboot依赖,pom.xml文件如下: <?xml version=" ...
- 关于java属性字段命名
最近项目定义vo的时候,boolean类型数据定义成isProperty类型的,导致系统间数据交互过程中报错. 网上爬了良久: JavaBean命名规范里面规定,对于primitive和自定义类类型的 ...
- pathlib模块
一.pathlib库官方定义 pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径).path ...