PAT甲级1045
来源:互联网 发布:黄金实时报价软件 编辑:程序博客网 时间:2024/06/13 05:36
1045. Favorite Color Stripe (30)
Eva is trying to make her own color stripe out of a given one. She would like to keep only her favorite colors in her favorite order by cutting off those unwanted pieces and sewing the remaining parts together to form her favorite color stripe.
It is said that a normal human eye can distinguish about less than 200 different colors, so Eva's favorite colors are limited. However the original stripe could be very long, and Eva would like to have the remaining favorite stripe with the maximum length. So she needs your help to find her the best result.
Note that the solution might not be unique, but you only have to tell her the maximum length. For example, given a stripe of colors {2 2 4 1 5 5 6 3 1 1 5 6}. If Eva's favorite colors are given in her favorite order as {2 3 1 5 6}, then she has 4 possible best solutions {2 2 1 1 1 5 6}, {2 2 1 5 5 5 6}, {2 2 1 5 5 6 6}, and {2 2 3 1 1 5 6}.
Input Specification:
Each input file contains one test case. For each case, the first line contains a positive integer N (<=200) which is the total number of colors involved (and hence the colors are numbered from 1 to N). Then the next line starts with a positive integer M (<=200) followed by M Eva's favorite color numbers given in her favorite order. Finally the third line starts with a positive integer L (<=10000) which is the length of the given stripe, followed by L colors on the stripe. All the numbers in a line are separated by a space.
Output Specification:
For each test case, simply print in a line the maximum length of Eva's favorite stripe.
Sample Input:65 2 3 1 5 612 2 2 4 1 5 5 6 3 1 1 5 6Sample Output:
7
#include<cstdio>#include<algorithm>using namespace std;const int maxn = 210;const int maxL = 10010;int N, M, L;int color[maxn];bool hashtable[maxn] = { false };int stripe[maxL];int priority[maxL];int d[maxL];//状态int main(){scanf("%d", &N);scanf("%d", &M);for (int i = 0; i < M; i++){scanf("%d", &color[i]);hashtable[color[i]] = true;//只比较这些数priority[color[i]] = i;//设置优先级}scanf("%d", &L);for (int i = 0; i < L; i++){scanf("%d", &stripe[i]);}int ans = -1;for (int i = 0; i < L; i++){if (hashtable[stripe[i]] == true){d[i] = 1;//LIS初始化为1for (int j = 0; j < i; j++){if (priority[stripe[i]] >= priority[stripe[j]] && d[j] + 1 > d[i])d[i] = d[j] + 1;}ans = max(d[i], ans);}}printf("%d\n", ans);}
- PAT(甲级)1045
- *浙大PAT甲级 1045
- PAT甲级1045
- PAT 甲级
- PAT甲级 A1025.PAT RANKING
- PAT 甲级 1025 PAT Ranking
- PAT(甲级)1003
- PAT(甲级)1004
- PAT(甲级)1005
- PAT(甲级)1006
- PAT(甲级)1007
- PAT(甲级)1008
- PAT(甲级)1009
- PAT(甲级)1010
- PAT(甲级)1011
- PAT(甲级)1012
- PAT(甲级)1013
- PAT(甲级)1014
- 自定义RadioButton样式2
- js----面向对象
- H5学习之路-图片验证码的实现
- 关于拦截方法调用其他内部方法无法被拦截问题的解决
- 【蓝桥杯单片机组】(2)锁存器、数码管、蜂鸣器、继电器
- PAT甲级1045
- 2017新的征程-年度计划
- 考研英语 - word-list-8
- Redis在windows下安装过程
- Bootstrap学习笔记(七)其它内置组件
- 什么是daemon线程
- Qt学习之路一(一个简单的时钟)
- jQuery ajax跨域请求的解决方法
- java acm 题目8 一种排序 详细解析