Jzoj5424 凤凰院凶真
给你两个序列A和B,求出他们的最长公共上升子序列并输出方案
动态规划,我们假设f[i][j]表示A处理到第i位,B处理到第j位时的长度
那么显然,若A[i]=B[j],那么f[i][j]=max{f[i-1][k]}+1,否则f[i][j]=f[i-1][j]
我们再记一个g[i][j]表示f[i][j]是从哪里转移过来的,记上面那个k即可
到时候直接倒序递归按照g[i][j]输出,若g[i][j]=0那么就--i
#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int f[5010][5010],g[5010][5010],a[5010],b[5010],n,m;
void print(int i,int j){if(j){while(i&&!g[i][j]) i--;print(i-1,g[i][j]);printf("%d ",b[j]);}
}
int main(){freopen("okarin.in","r",stdin);freopen("okarin.out","w",stdout);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 k,i=1;i<=n;++i){k=0;for(int j=1;j<=m;++j){f[i][j]=f[i-1][j];if(a[i]==b[j]){f[i][j]=f[i-1][k]+1;g[i][j]=k;}if(a[i]>b[j]&&f[i-1][k]<f[i-1][j]) k=j;}}int j=0;for(int i=m;i;--i)if(f[n][i]>f[n][j]) j=i;printf("%d\n",f[n][j]);print(n,j);
}
转载于:https://www.cnblogs.com/Extended-Ash/p/9477223.html
Jzoj5424 凤凰院凶真相关推荐
- JZOJ5424. 【NOIP2017提高A组集训10.25】凤凰院凶真
题解 题目的意思是求两个序列的最长公共上升子序列. 就此可以联想到求两个序列的最长公共子序列: 设fi,jf_{i,j}表示a序列处理到i,b序列处理j的最长公共子序列, 转移很简单. 现在要满足公共 ...
- JZOJ 5424. 【NOIP2017提高A组集训10.25】凤凰院凶真
Description Input Output Sample Input 5 1 4 2 5 1 4 1 1 2 4 Sample Output 2 1 4 Data Constraint Solu ...
- 5424. 【NOIP2017提高A组集训10.25】凤凰院凶真
这是一道DP题,然后做的时候发现,DP式子死活推不出来. 题目大意(本人实在是不想复制了呵-- 给出A,B序列 找出他们的最长公共严格递增子序列 明确,这是一道DP 所以设状态fi,jf_{i,j}f ...
- NOIP5424. 【NOIP2017提高A组集训10.25】凤凰院凶真 LCIS 方案
题意:求lcis以及其方案. 原题:千帆渡 n<=5000. 很明显的DP. 设f[i][j]表示做到a的第i位,结尾是b的第j位,这样子便于记录方案. 那么明显有 f[i][j]=max(f[ ...
- 计算机科学学院凤凰院徽,数学科学学院院徽、院训展示
原标题:数学科学学院院徽.院训展示 电子科技大学 数学科学学院院徽.院训 2018年12月22日,数学科学学院于2019"数说新语 逐梦青春"迎新晚会暨2018年度表彰大会上,最终 ...
- 【SSLGZ 2812】2017年10月30日提高组T2 凤凰院真凶
问题描述 输入 输出 第一行一个整数k,表示最长公共合法事件序列的长度. 样例输入 5 1 4 2 5 1 4 1 1 2 4 样例输出 2 数据范围 算法讨论 f[i][j]为a到第i个位置,b到第 ...
- [2017纪中10-25]凤凰院修真 LCIS最长公共上升子序列
题面 f[i][j]表示a序列考虑到i,b序列考虑到j且b[j]必须选的最长长度. a[i]!=b[j]时,f[i][j]=f[i-1][j]. 那么当a[i]==b[j]时,f[i][j]=max{ ...
- 2013年北邮网研院上机真题(D)
D 文件系统 Accept:9 Submit:79 Time Limit:1000MS Memory Limit:65536KB Description 现在很多操作系统的文件系统都是基于树形 ...
- unity | 写一个XML和用unity读取XML
一.新建一个XML文档 打开VS→另存为→格式选择xml 二.了解xml的语法规则 1.开头固定 就是开头必须有这一行,当然,里面的版本和编码格式,如果你懂的话,也可以自己改其他的. <?xml ...
- csu-2018年11月月赛Round2-div1题解
csu-2018年11月月赛Round2-div1题解 A(2191):Wells的积木游戏 Description Wells有一堆N个积木,标号1~N,每个标号只出现一次 由于Wells是手残党, ...
最新文章
- python3 统计文件夹下文件(含文件夹)的个数
- MySQL从主从到代理
- xcode开发php,xcode怎么编写c语言
- 对象与内存控制1---实例变量和类变量
- ros下的python代码的编写与回调函数
- MTK驱动(84)---GPS 配置
- 添加七牛云存储_3月1日七牛云存储割韭菜的应对方法
- bom csv java_Java系列化与反系列化
- java计算两个字符串格式的时间间隔多少天多少小时多少分钟
- js调用百度地图搜索功能
- python 文件处理软件_Python如何处理文件的?
- Solidworks 3D Onshape 3D 繪圖自學分享
- 计算机专业专硕考研数学考一还是二,计算机专业考研数学考一还是二
- matlab精度高保存图片
- forward函数——浅学深度学习框架中的forward
- 又看到一种新的日志转贴方法
- R 入门级 之 《R的基本原理与概念》 -- 200412
- oracle 查询秒,oracle 查询N秒之前的数据
- 登录提示:You are required to change your password immediately (password aged)
- 网上爬取股票数据实例