动态规划 | 对输入进行hash处理的LIS 1045
把序列M处理为有序序列,并且M不存在的序列要在A中删除。
对A进行了处理之后,执行LIS的操作(O(N^2)复杂度)。当然可以优化为对数复杂度的,不过pat不卡这个。
LCS解法:动态规划 | 保留重复元素的LCS 1045
AC代码:
#include <stdio.h> #include <memory.h> #include <math.h> #include <string> #include <vector> #include <set> #include <stack> #include <queue> #include <algorithm> #include <map>#define I scanf #define OL puts #define O printf #define F(a,b,c) for(a=b;a<c;a++) #define FF(a,b) for(a=0;a<b;a++) #define FG(a,b) for(a=b-1;a>=0;a--) #define LEN 10010 #define MAX (1<<30)-1 #define V vector<int>using namespace std;int hashTable[210]; //将输入颜色映射为递增序列 int A[10010]; //处理后的颜色序列(用LIS对这个数组进行求解 int dp[10010]; //dp[i]记录 0 ~ i 最多的递增序列个数 int main(){ // freopen("1045.txt","r",stdin);int i,N,M,L,x,j;memset(hashTable,-1,sizeof hashTable);I("%d",&N);I("%d",&M);FF(i,M){I("%d",&x);hashTable[x]=i;}I("%d",&L);int num=0; //处理后A数组颜色的总和 FF(i,L){I("%d",&x);if(hashTable[x]>=0){A[num++]=hashTable[x];}}int ans=0;FF(i,num){dp[i]=1;FF(j,i){if(A[j]<=A[i]){dp[i]=max(dp[i],dp[j]+1);}}ans=max(ans,dp[i]);}O("%d\n",ans);return 0; }
转载于:https://www.cnblogs.com/TQCAI/p/8571481.html
动态规划 | 对输入进行hash处理的LIS 1045相关推荐
- 动态规划 - 最长递增子序列LIS
问题:一个序列有N个数:A[1],A[2],-,A[N],求出最长非降子序列的长度 样例输入:3 1 2 6 5 4 思路: 首先把问题简单化.可以先求A[1],...A[i]的最长非降子序列,令dp ...
- 最长上升子序列 (LIS) 详解+例题模板 (全)
欢迎访问https://blog.csdn.net/lxt_Lucia-- 宇宙第一小仙女\(^o^)/-萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗- ------------ ...
- HDU 1257 - 最少拦截系统 ( LIS / 贪心 )
题目 现在有一种拦截系统,第一发拦截可以是任意高度,但是之后的拦截高度不能比上次高.为了拦截下所有的炮弹,最少需要准备几套拦截系统? 思路 可能是语文没学好吧,一开始被题意卡了一下.(而且题目连数据范 ...
- haproxy Consistent Hash浅析
http://blog.sina.com.cn/s/blog_502c8cc40100kfz2.html Haproxy实现了Map-based 和consistent hash算法,来完成通过哈希值 ...
- 动态规划——基本思想
动态规划--基本思想 动态规划的特点 把原始问题划分为一系列子问题 求解每个子问题仅一次,并将其结果保存在一个表中,以后用到时到时直接存取,不重复计算,节省计算时间 自底向上地计算 使用范围 一类优化 ...
- 一致性 hash 算法 — CARP 2020/5/11 19:38
layout: post title: "一致性 hash 算法 - CARP" date: 2020-05-11 3:44:09 +0800 categories: hash 一 ...
- 弄明白HASH,你就弄明白区块链的一大半
"人类历史上第一次,全世界各地的人,花费巨额的成本,争前恐后地寻找美学意义上的数学运算结果." -卫sir Beeple加密艺术作品<区块链> 说起区块链,似乎大家都懂 ...
- HDU 5811 (拓扑排序 LIS)
题目链接:点击这里 题意:给定n个人之间的强壮关系(没有传递性),分成两个组,首先判断每一组是否能够通过某种排列使得前面的人都比后面的人强壮.如果可以,最多能从2组中选几个人到1组使得1组通过排列仍然 ...
- snark/stark-friendly hash函数
1. 引言 零知识证明中,需要 prove the knowledge of a preimage under a cryptographic hash function,针对的场景为: public ...
最新文章
- 【杂谈】如何应对烦人的开源库版本依赖-做一个心平气和的程序员?
- BZOJ3675 [APIO2014]序列分割
- Pytorch使用记录
- 电影'社交网络'获金球奖最佳影片,最佳编剧,最佳导演,最佳配乐奖
- 如何在win10 64位下搭载汇编环境(包含汇编dosbox和masm文件)
- XML文件源码察看器(三)
- 满满干货!邮储银行java面试
- c语言函数能返回结构体,从C中的函数返回`struct`
- linux设置 wps 窗口颜色设置,WPS文字办公—修改默认字体颜色的方法
- Kaplan-Meier plot cutoff选择
- DCOS :私有云的物理基础架构管理引擎
- modbus4j.jar实现modbus urt模式
- Android扫描系统文件,安卓文档扫描仪
- Python pandas库|任凭弱水三千,我只取一瓢饮(4)
- ABP VNext学习日记4
- 财报解读:赢了利润的京东不想打恶性“价格战”
- FLUENT UDF案例一
- DSPack初度应用小结
- iOS 直播心形点赞动画
- VisualSVN Server版本库搭建