[CSP-S模拟测试]:凤凰院凶真(LCIS)
题目描述
$\alpha$世界线。
凤凰院凶真创立了反抗$SERN$统治的组织“瓦尔基里”。为了脱离$\alpha$线,他需要制作一个世界线变动率测量仪。
测量一个世界线相对于另一个世界线的变动率,实质上就是要求出这两个世界线的最长公共合法事件序列。
一个世界线的事件逻辑序列是一个正整数序列,第$k$个数表示第$k$个事件发生的时间。
对于一个世界线,一个合法的事件序列是事件逻辑序列的一个子序列,满足时间严格递增。
现在,对于两个不同的世间线$\alpha,\beta$,求出最长的一个事件序列,满足这个序列在$\alpha,\beta$世界线中均是合法的。这个序列也就是之前提到过的最长公共合法事件序列。
输入格式
第一行一个整数$n$,表示$\alpha$世界线的事件个数。
第二行$n$个整数$a_1,a_2,...,a_n$,表示$\alpha$世界线的事件逻辑序列。
第三行一个整数$m$,表示$\beta$世界线的事件个数。
第四行$m$个整数$b_1,b_2,...,b_m$,表示$\beta$世界线的事件逻辑序列。
输出格式
第一行一个整数$k$,表示最长公共合法事件序列的长度。
第二行$k$个整数,表示最长公共合法事件序列。如果有多解,输出任意一个。
样例
样例输入:
5
1 4 2 5 1
4
1 1 2 4
样例输出:
2
1 4
数据范围与提示
无论执迷过去
还是叹息未来
皆是不准有丝毫误算的必然
所以本题将捆绑测试。也就是说,只有你通过一个子任务内的所有测试点,才能获得该子任务的全部分数,否则得$0$分。

对于$100\%$的数据,$1\leqslant n,m\leqslant 5,000,1\leqslant a_i,b_i\leqslant 2^{30}$。
题解
发现是一道裸的$LCIS$,只不过我们需要在转移的时候记录一下是从哪里转移过来的就好了。
当然要是你闲的慌的话也可以打个三维偏序……
没什么好说的了……
时间复杂度:$\Theta(n^2)$。
期望得分:$100$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[5001],b[5001];
int dp[5001][5001];
pair<int,int> pre[5001][5001];
void get(int x,int y)
{
if(!x)return;
get(pre[x][y].first,pre[x][y].second);
printf("%d ",b[y]);
}
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]);
for(int i=1;i<=n;i++)
{
int val=0;
pair<int,int> pv=make_pair(0,0);
for(int j=1;j<=m;j++)
{
if(a[i]==b[j]){dp[i][j]=val+1;pre[i][j]=pv;}
else{dp[i][j]=dp[i-1][j];pre[i][j]=pre[i-1][j];}
if(b[j]<a[i])
if(val<dp[i-1][j])
{
pv=make_pair(i-1,j);
val=dp[i-1][j];
}
}
}
int now=0;
for(int i=1;i<=m;i++)if(dp[n][i]>dp[n][now])now=i;
printf("%d\n",dp[n][now]);
get(n,now);
return 0;
}
rp++
[CSP-S模拟测试]:凤凰院凶真(LCIS)的更多相关文章
- 【CSP模拟赛】凤凰院凶真(最长公共上升子序列)
题目描述 α世界线.凤凰院凶真创立了反抗SERN统治的组织“瓦尔基里”.为了脱离α线,他需要制作一个世界线变动率测量仪. 测量一个世界线相对于另一个世界线的变动率,实质上就是要求出这两个世界线的最长公 ...
- csps-s模拟测试60嘟嘟噜,天才绅士少女助手克里斯蒂娜,凤凰院凶真题解
题面:https://www.cnblogs.com/Juve/articles/11625190.html 嘟嘟噜: 约瑟夫问题 第一种递归的容易re,但复杂度较有保证 第二种适用与n大于m的情况 ...
- csp-s模拟测试60
csp-s模拟测试60 2019-10-05 RT. 又颓又垃圾. 状态低迷,题都交不上去. 交了也是爆零,垃圾玩家没有什么可说的,就是垃圾. A. 嘟嘟噜 $mlogn$的毒瘤做法. 贴 ...
- [考试反思]1005csp-s模拟测试60:招魂
最近总是好一场烂一场的.没有连续两场排名波动小于20的... 没人管.反正大脸一点脸没有就又AK了. 但是T3爆零这种事情吧... 爆搜不是很难打,但是想优化想了半天剩的时间不够结果赶忙打出来了,然后 ...
- [CSP-S模拟测试60]题解
回去要补一下命运石之门了…… A.嘟嘟噜 给定报数次数的约瑟夫,递推式为$ans=(ans+m)\% i$. 考虑优化,中间很多次$+m$后是不用取模的,这种情况就可以把加法变乘法了.问题在于如何找到 ...
- [考试反思]0814NOIP模拟测试21
前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...
- csp-s模拟测试98
csp-s模拟测试98 $T1$??不是我吹我轻松手玩20*20.$T2$装鸭好像挺可做?$T3$性质数据挺多提示很明显? $One$ $Hour$ $Later$ 这$T1$什么傻逼题真$jb$难调 ...
- csp-s模拟测试90
csp-s模拟测试90 考场发明$Spfa$祭. $T1$按照题意模拟,然后我就发现我死了.一气之下删掉了$priority$,拍了几下发现贼jb快而且还是对的就开心地交了.$T2$的差分状态定义很棒 ...
- Android单元测试与模拟测试详解
测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...
随机推荐
- gradle implementation runtimeOnly 和api 区别
implementation 不对外开发,只是本项目依赖. runtimeOnly 运行时才依赖 api 可以传递依赖,别的项目也可以依赖api的jar包.
- 剑指offer(1):数组
1 写作计划 最近在看<剑指offer>,发现自己有很多的数据结构与算法的基础知识要复习,<好书一起读(131):让写作更好>中提到用写作倒逼阅读,我很是赞同.所以,计划以&l ...
- dvorak键盘布局调整
一站直达: http://www.kaufmann.no/roland/dvorak/
- django中orm多表查询,减少数据库查询操作
.select_related() 的使用
- Ad Hoc Distributed Queries / xp_cmdshell 的启用与关闭
启用Ad Hoc Distributed Queries: reconfigure reconfigure 关闭Ad Hoc Distributed Queries: reconfigure reco ...
- 收集慕课网讲解的border知识
1.使用boeder辅助background-posi定位 2.使用border实现三道杠图标 3.利用border实现--鼠标放上去后,改变图标的颜色
- 5105 pa1 MapReduce
Programming Assignment 1: A simple MapReduce-like compute framework Yuanli Wang wang8662 ...
- Django:django-debug-toolbar模块
简介: Django的django-debug-toolbar 模块是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息. GitHub源文件下载地址 ...
- opencv配置经常遇到的错误
我们在运行一些书上的例子,经常会遇到以下的错误 还有什么Assertion Failed错误.这些错误都是我运行浅墨书上的例子或者博客的例子上面的代码的错误,他自己也提了一下,但是说的不是特别的清楚, ...
- Flutter 实际开发常用工具类(全局提示,请求封装,token缓存,验证码倒计时、常用窗帘动画及布局)
介绍: 一星期从入门到实际开发经验分享及总结 代码传送门github Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面.未来App开发 ...