当前位置: 首页 > news >正文

PAT A1045 Favorite Color Stripe

1045 Favorite Color Stripe

分数 30

作者 CHEN, Yue

单位 浙江大学

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 (≤104) which is the length of the given stripe, followed by L colors on the stripe. All the numbers in a line a 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:

6
5 2 3 1 5 6
12 2 2 4 1 5 5 6 3 1 1 5 6

Sample Output:

7

 

* 最长不下降子串的模板;
 * 先对喜欢的数字赋一个喜欢度,后选择的数字的喜欢度必定要大于等于前面选择的数字的喜欢度;
 * 后面就是最长不下降子串的模板;
 *
 * 状态设计:dp[i] 表示所有以第i个数结尾的上升子序列的集合的最长长度;
 * 状态转移方程:dp[i] = max(dp[j]+1,1) (j=0,1,...,i-1);
 * dp[i] = dp[j] + 1 的含义表示i加到j的后面能否形成更长的LIS;

/*** 最长不下降子串的模板;* 先对喜欢的数字赋一个喜欢度,后选择的数字的喜欢度必定要大于等于前面选择的数字的喜欢度;* 后面就是最长不下降子串的模板;* * 状态设计:dp[i] 表示所有以第i个数结尾的上升子序列的集合的最长长度;* 状态转移方程:dp[i] = max(dp[j]+1,1) (j=0,1,...,i-1);* dp[i] = dp[j] + 1 的含义表示i加到j的后面能否形成更长的LIS;
*/#include <iostream>
#include <algorithm>using namespace std;const int N = 510, M = 1e5+10;
int dp[M], fav[M], ori[M];
int hs[N];int main()
{fill(hs, hs+N, -1); //初始化int n, m, l;cin >> n;cin >> m;for(int i=0; i<m; ++i)  {cin >> fav[i];hs[fav[i]] = i;}cin >> l;for(int i=0; i<l; ++i)  cin >> ori[i];for(int i=0; i<l; ++i){if(hs[ori[i]] != -1)    dp[i] = 1; //只有在喜欢的序列里面才可以选择该数字for(int j=0; j<i; ++j)if(hs[ori[i]] != -1 && hs[ori[i]] >= hs[ori[j]] && dp[j] + 1 > dp[i]){dp[i] = dp[j] + 1;}}cout << *max_element(dp, dp+M);return 0;
}

http://www.lryc.cn/news/67543.html

相关文章:

  • 真实业务场景使用-门面模式(外观)设计模式
  • 基于多动作深度强化学习的柔性车间调度研究(Matlab代码实现)
  • 出口亚马逊平衡车CE/UKCA认证注意事项
  • 云原生环境下的安全实践:保护应用程序和数据的关键策略
  • vue 改变数据后,数据变化页面不刷新
  • 【Qt编程之Widgets模块】-006:QSortFilterProxyModel代理的使用方法
  • 上林赋 汉 司马相如
  • 7.对象模型
  • 机器学习——基本概念
  • Qt---感觉挺重要的部分
  • springboot+vue家乡特色推荐系统(源码+文档)
  • 在Shell脚本中通过ssh从脚本运行函数
  • 简单学习一下 MyBatis 动态SQL使用及原理
  • WhatsApp如何让客户参与变得更简单?
  • 记一次 MySQL 主从同步异常的排查记录,百转千回
  • Cpython的多线程技术之痛
  • NDK OpenGL离屏渲染与工程代码整合
  • Python基础入门编程代码练习(二)
  • C# | 对象池
  • CSS小技巧之圆形虚线边框
  • QString与QByteArray互相转换的方法
  • Springboot +Flowable,设置流程变量的方式(一)
  • 机器学习13(正则化)
  • 并发编程学习(十一):原子数组、
  • 递归到动态规划:省去枚举行为
  • 服务(第二十一篇)mysql高级查询语句(二)
  • MYSQL高可用配置(MHA)
  • 单精度浮点数与十进制数据相互转换
  • PMP敏捷-4大价值观、12原则
  • K8S—Helm