首页 > 其他分享 >P10954 LCIS 题目解析

P10954 LCIS 题目解析

时间:2024-11-07 22:41:13浏览次数:1  
标签:LCIS 解析 int P10954 LONG cin long include define

P10954 LCIS 题目解析

题目链接

思路

前置:弱化版

没什么好说的,设 \(f_{i,j}\) 表示 \(a\) 的前 \(i\) 个并且结尾为 \(b_j\) 的最长上升公共子序列。

定义 \(a_0=b_0=-\infty.\)

转移:

  • \(a_i=b_j,f_{i,j}=\max_{k\in [0,j-1]\text{ 且 }b_k < a_i} f_{i-1,k}.\)
  • 否则,\(f_{i,j}=f_{i-1,j}.\)

于是有了以下代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <stdlib.h>
#include <cstring>
#include <climits>
#define N 3005
#define int long long
using namespace std;
int n,m,a[N],b[N],f[N][N],ans;
signed main(){
	cin >> n;
	for (int i = 1;i <= n;i ++) cin >> a[i];
//	cin >> m;
	m = n; 
	for (int i = 1;i <= m;i ++) cin >> b[i];
	a[0] = b[0] = -LONG_LONG_MAX;
	for (int i = 1;i <= n;i ++) {
		for (int j = 1;j <= m;j ++) {
			if (a[i] == b[j]) {
				for (int k = 0;k < j;k ++)
					if (b[k] < a[i])
						f[i][j] = max(f[i - 1][k] + 1,f[i][j]);
			}
			else f[i][j] = f[i - 1][j];
			ans = max(ans,f[i][j]);
		}
	}
	cout << ans;
	return 0;
}

我们发现直接过掉了,但这样的时间复杂度是 \(\mathcal{O}(n^3)\) 的。

考虑免去一些重复的取 \(\max\) 值。

设决策 \(S(i,j)\) 为此次 \(f_{i,j}\) 的决策。

我们发现 \(b_k<a_i\) 中的 \(a_i\) 在某种程度上来讲是一个定值。

因此我们可以在枚举 \(i\) 的时候就把决策取入一个变量 \(mx\) 里面,当有满足 \(b_j<a_i\) 时,再加入进去(这是因为下一次 \(j+1\) 会有 \(j\) 的决策点 )。

时间复杂度 \(\mathcal{O}(n^2)\),正确地通过了本题。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <stdlib.h>
#include <cstring>
#include <climits>
#define N 3005
#define int long long
using namespace std;
int n,m,a[N],b[N],f[N][N],ans;
signed main(){
	cin >> n;
	for (int i = 1;i <= n;i ++) cin >> a[i];
//	cin >> m;
	m = n; 
	for (int i = 1;i <= m;i ++) cin >> b[i];
	a[0] = b[0] = -LONG_LONG_MAX;
	for (int i = 1;i <= n;i ++) {
		int mx = 0;
		if (b[0] < a[i]) mx = f[i - 1][0];
		for (int j = 1;j <= m;j ++) {
			if (a[i] == b[j]) f[i][j] = mx + 1;
			else f[i][j] = f[i - 1][j];
			ans = max(ans,f[i][j]);
			if (b[j] < a[i]) mx = max(mx,f[i - 1][j]);
		}
	}
	cout << ans;
	return 0;
}

标签:LCIS,解析,int,P10954,LONG,cin,long,include,define
From: https://www.cnblogs.com/high-sky/p/18534158

相关文章

  • SP15637 GNYR04H - Mr Youngs Picture Permutations 解析
    SP15637GNYR04H-MrYoungsPicturePermutations解析题目链接分析题目性质大意就是给\(k\)排然后每个数列单调,每个横列单调,求满足这样排列的方案数。我们发现:与其为每个位置分配某个学生不如考虑将每个学生分给某个位置。思路根据以上,不妨设:\(f_{a_1,a_2,a_3,a_4,a_5}......
  • WPF 中 NavigationWindow 与 Page 的继承关系解析
    官网解析:NavigationWindow类   |    Page类publicclassBaseWindow:NavigationWindow{}publicpartialclassCountPage:Page{}都是创建的WPF界面有什么区别?在WPF(WindowsPresentationFoundation)开发中,我们经常需要设计具有多个页面的应用程序。在......
  • 实用GIS工具箱对比:GISBox等倾斜摄影切片软件的优缺点解析
    在地理信息系统(GIS)领域,强大的工具可以帮助用户更高效地进行数据处理、分析和可视化。本文介绍了五款实用的GIS工具箱——GISBox、QGIS、ArcGISOnline、GlobalMapper、MapTiler。它们各自在数据编辑、格式转换、地图发布和切片等方面具有独特的功能,能够满足从地理数据管理到复杂......
  • 书缘·红楼梦诗词解析
    书缘·红楼梦诗词解析文件:刘耕路-红楼梦诗....epub链接:https://pan.baidu.com/s/1RrnZjAV6Ggif7-GymWQWhQ提取码:59i9目录序女娲石上偈语题《金陵十二钗》一绝太虚幻境石牌坊联语癞头僧嘲甄士隐贾雨村对月口占五言律贾雨村口吟联语贾雨村对月寓怀口号一绝跛足道人念的......
  • 专属互联网接入,高效企业运营:联通国际DIA服务解析
    在数字化时代,企业对于互联网接入的需求日益增长,而如何确保高质量、稳定的网络连接成为了企业运营的关键。中国联通国际推出的ChinaDIA及GlobalDIA服务,正是为了满足这一需求而设计的专属互联网接入解决方案。一、产品概述ChinaDIA及GlobalDIA服务依托中国联通国际自有网络平......
  • 音箱与功放功率解析
    音响系统中,功率是核心参数。然而,众多功率术语如RMS功率、额定功率、峰值功率、瞬时功率等混杂不清,常让人难以理解各自含义。何谓音箱功率,何谓功放功率?功放功率超出音箱标称值是否安全?1.功率类型解析:识别不同功率术语的真实含义音箱与功放功率测试条件不同,因此出现了多种......
  • PCB上常见标记及其功能解析
    在电子工程领域,PCB被广泛用于各种电子产品中,承担着连接元器件并实现电气互联的重任。在PCB设计中,为了提高电路板的可靠性、制造的便利性及功能的精确性,常见标记符号至关重要。1.PCB邮票孔邮票孔,顾名思义,是在PCB拼板时用于便于板与板之间分离的小孔。邮票孔通常排列成一定......
  • 图解析网络【Published as a conference paper at ICLR 2024】
    【文章来源:https://arxiv.org/pdf/2402.14393】摘要motivation:图池是建立在GNN之上的。它旨在通过将一组节点及其底层结构压缩为更简洁的表示来捕获图级信息。早期的图池化方法,如mean,add或pool对图中的所有节点执行排列不变操作。这些平面池化方法忽略了节点之间的区别,无......
  • 深入解析 WKWebView 的 didFinish 回调时机:页面加载与异步操作的处理
    在iOS开发中,我们经常会用WKWebView来加载和展示H5页面。通常,开发者会在WKWebView的didFinish方法中处理页面加载完成后的逻辑,例如更新UI或执行后续操作。然而,didFinish的触发时机并不总是如我们所期待,它并不会等待所有异步操作(如AJAX请求、图片加载等)完成后再执行......
  • pyspark 解析kafka数组结构数据
    frompyspark.sql.functionsimportget_json_object,col,from_unixtime,instr,length,regexp_replace,explode,from_jsonfrompyspark.sql.typesimport*#定义数组结构schema=ArrayType(StructType([StructField("home",StringType()),S......