2016年提高组模拟题(20161111) 配饰 ssl 2569 LCIS的集合
2016-11-11 20:54
197 查看
Description
但是小L想考验一下小T,所以,他给小T出了一个难题.他拿出了他所有的配饰并摆成两列,如果两个配饰的型号一样并且出现在不同列中,那么我们就可以认为这两个配饰为情侣配饰.另外,由于某些不为人知的原因,我们规定,在顺序选取的情况下,每选定的一对配饰必须比前面选定的一对配饰的型号要大.小T最多能够选取多少对配饰呢?
Input
共四行第一行一个数N 表示第一列配饰的个数
第二行N个数 分别表示第一列配饰的型号
第三行一个数M 表示第二列配饰的个数
第四行M个数 分别表示第二列配饰的型号
Output
仅一个数K,表示最多能选取的情侣配饰的对数.分析
裸的LCIS直接放网页了——LCIS之类的集合
话说好像有一个库里有max这个保留字
代码
#include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<string> #include<algorithm> using namespace std; int f[1005][1005],a[1005],b[1005]; int n,m,ma; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); scanf("%d",&m); for(int i=1;i<=m;i++) scanf("%d",&b[i]); memset(f,0,sizeof(f)); for(int i=1;i<=n;i++) { ma=0; for(int j=1;j<=m;j++) { f[i][j]=f[i-1][j]; if ((a[i]>b[j])&&(f[i-1][j]>ma)) ma=f[i-1][j]; if (a[i]==b[j]) f[i][j]=ma+1; } } int ans=0; for(int i=1;i<=m;i++) if (ans<f [i]) ans=f [i]; printf("%d\n",ans); }
相关文章推荐
- 2016年提高组模拟题(20161114) 文件列表 ssl 2572 模拟
- 配饰_ssl2569_LCIS
- 2016年提高组模拟题(20161114) 锦标赛 ssl 2571 差分约束系统
- 2016年提高组模拟题(20161114) 物品选取 ssl 2572 dp_背包
- SSL2556 2016年提高组模拟试题(20161107)舞会配对(贪心)
- 2016年提高组模拟试题(20161116) 《逍遥游》ssl 2581 奇葩
- 2016年提高组模拟题(20161114) 锦标赛
- SSL2812 2017年10月30日提高组T2 凤凰院凶真(dp,LCIS)
- 2016年提高组模拟题(20161114) 物品选取
- SSL2560 2016年提高组模拟试题 连锁店(贪心)
- 2016年提高组模拟题(20161114) 文件列表
- Java提高篇-----java集合细节(二):asList的缺陷
- Java提高篇(三五)-----Java集合细节(一):请为集合指定初始容量
- java提高篇(二十)-----集合大家族
- JAVA提高第九篇 集合体系
- [题解]NOIP2016提高组の题解集合 - by xyz32768
- java集合提高
- 提高工作效率的工具集合
- 2016年提高组模拟试题(20161105)高维宇宙
- 2016年提高组模拟试题(20161105) 方程式