NOIP5424. 【NOIP2017提高A组集训10.25】凤凰院凶真 LCIS 方案
题意:求lcis以及其方案。
原题:千帆渡
n<=5000.
很明显的DP。
设f[i][j]表示做到a的第i位,结尾是b的第j位,这样子便于记录方案。
那么明显有
f[i][j]=max(f[i][k-1])+1(b[j]>b[k]&&j>k)f[i][j]=max(f[i][k-1])+1(b[j]>b[k]&&j>k)
由于规定了a[i]=b[j],所以上面的可以变成
f[i][j]=max(f[i][k-1])+1(a[i]>b[k]&&j>k)f[i][j]=max(f[i][k-1])+1(a[i]>b[k]&&j>k)
至于j>k这个显然。
所以我们可以在dp过程中不断更新k,然后扫完b以后更新。
轻松切,然后至于方案的话记录一下每个状态由什么转移过来,然后由于我们的dp的状态定义是一定以j结尾的,所以这就很简单了。
#include<cstdio>
#include<algorithm>
#include<cstring>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
const int N=5e3+5;
int a[N],b[N];
int f[N][N],n,m,lis[N];
struct node
{int x,y,z;
}pre[N][N];
int main()
{freopen("okarin.in","r",stdin);freopen("okarin.out","w",stdout);scanf("%d",&n);fo(i,1,n)scanf("%d",&a[i]);scanf("%d",&m);fo(i,1,m)scanf("%d",&b[i]);fo(i,1,n){int k=0,x=0,y=0;fo(j,1,m){f[i][j]=f[i-1][j];pre[i][j].z=f[i-1][j];pre[i][j].x=i-1,pre[i][j].y=j;if (a[i]>b[j]&&f[i-1][j]>k){k=f[i-1][j];x=i-1,y=j;}if (a[i]==b[j]){f[i][j]=k+1;pre[i][j].z=k;pre[i][j].x=x;pre[i][j].y=y;}}}int ans=0,p=0;fo(j,0,m)if (ans<f[n][j])ans=f[n][j],p=j;printf("%d\n",ans);int minx=1e9,tot=0;while(f[n][p]){if (f[n][p]<minx&&f[n][p]>0){minx=f[n][p];lis[++tot]=b[p];}int xx=pre[n][p].x;int yy=pre[n][p].y;n=xx,p=yy;}fd(i,tot,1)printf("%d ",lis[i]);printf("\n");
}
NOIP5424. 【NOIP2017提高A组集训10.25】凤凰院凶真 LCIS 方案相关推荐
- JZOJ 5426. 【NOIP2017提高A组集训10.25】摘Galo
Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...
- JZOJ 5421. 【NOIP2017提高A组集训10.25】嘟嘟噜
Description 由于众所周知的原因, 冈部一直欠真由理一串香蕉. 为了封上真由理的嘴, 冈部承诺只要真由理回答出这个问题, 就给她买一车的香蕉: 一开始有n 个人围成一个圈, 从1 开始顺时针 ...
- JZOJ 5425. 【NOIP2017提高A组集训10.25】数论
Description 聪明的0v0正在学习莫比乌斯反演. 她看到了这样的一道题:有n*m个人站成了一个n*m的方阵-- 剩下的题面,聪明的0v0不记得了.但是,她通过自己高超的数论技巧,给出了一个转 ...
- JZOJ 5422. 【NOIP2017提高A组集训10.25】天才绅士少女助手克里斯蒂娜
Description Input 第一行两个整数n;m 表示电子个数和询问个数. 接下来n 行, 每行两个整数x; y 表示vi. 接下来m 行, 每行形如1 p x y 或2 l r, 分别表示两 ...
- 5424. 【NOIP2017提高A组集训10.25】凤凰院凶真
这是一道DP题,然后做的时候发现,DP式子死活推不出来. 题目大意(本人实在是不想复制了呵-- 给出A,B序列 找出他们的最长公共严格递增子序列 明确,这是一道DP 所以设状态fi,jf_{i,j}f ...
- JZOJ5424. 【NOIP2017提高A组集训10.25】凤凰院凶真
题解 题目的意思是求两个序列的最长公共上升子序列. 就此可以联想到求两个序列的最长公共子序列: 设fi,jf_{i,j}表示a序列处理到i,b序列处理j的最长公共子序列, 转移很简单. 现在要满足公共 ...
- 【NOIP2017提高A组集训10.25】摘Galo (树形dp)
Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...
- 【JZOJ 5426】【NOIP2017提高A组集训10.25】摘Galo
Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...
- JZOJ5426. 【NOIP2017提高A组集训10.25】摘Galo
Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...
最新文章
- python 利用模板文件生成配置文件
- OC基础回想(十二)协议
- 0010服务器无对应信息,查看云服务器信息
- linux-基本权限-chown-chod
- 把样本扩增与多类标融合在一起的caffe 代码
- Linux系统简单实验操作rm
- C语言常用代码组织形式
- linux clone函数ptid,pthread_create到ret_fast_syscalls 参数和栈的变化
- WebLogic—在Eclipse上配置WebLogic Server
- injectcheck php_php简单实现sql防注入的方法
- 微信爬虫服务器,为什么现在那么多爬虫,却没有爬取微信公众号文章的案例?...
- KEIL5添加STC芯片库
- Word文档中去除EndNote格式
- 每天一kernel:正太概率图
- Android播放音乐的代码,android源代码(完整的音乐播放器)
- ubuntu18.10安装redshift护眼软件
- laravel发送邮件
- 基于单片机超声波视力保护系统设计-基于51单片机8音键电子琴仿真设计-基于8086八路模拟信号采集均值显示系统设计-基于8086八路数据电压温度采集系统-基于8086波形发生器仿真设计【毕设课设分享】
- html 5 压缩zip,Zip
- MacOS : 大前端必备姿势(工作环境)