题意:求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 方案相关推荐

  1. JZOJ 5426. 【NOIP2017提高A组集训10.25】摘Galo

    Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...

  2. JZOJ 5421. 【NOIP2017提高A组集训10.25】嘟嘟噜

    Description 由于众所周知的原因, 冈部一直欠真由理一串香蕉. 为了封上真由理的嘴, 冈部承诺只要真由理回答出这个问题, 就给她买一车的香蕉: 一开始有n 个人围成一个圈, 从1 开始顺时针 ...

  3. JZOJ 5425. 【NOIP2017提高A组集训10.25】数论

    Description 聪明的0v0正在学习莫比乌斯反演. 她看到了这样的一道题:有n*m个人站成了一个n*m的方阵-- 剩下的题面,聪明的0v0不记得了.但是,她通过自己高超的数论技巧,给出了一个转 ...

  4. JZOJ 5422. 【NOIP2017提高A组集训10.25】天才绅士少女助手克里斯蒂娜

    Description Input 第一行两个整数n;m 表示电子个数和询问个数. 接下来n 行, 每行两个整数x; y 表示vi. 接下来m 行, 每行形如1 p x y 或2 l r, 分别表示两 ...

  5. 5424. 【NOIP2017提高A组集训10.25】凤凰院凶真

    这是一道DP题,然后做的时候发现,DP式子死活推不出来. 题目大意(本人实在是不想复制了呵-- 给出A,B序列 找出他们的最长公共严格递增子序列 明确,这是一道DP 所以设状态fi,jf_{i,j}f ...

  6. JZOJ5424. 【NOIP2017提高A组集训10.25】凤凰院凶真

    题解 题目的意思是求两个序列的最长公共上升子序列. 就此可以联想到求两个序列的最长公共子序列: 设fi,jf_{i,j}表示a序列处理到i,b序列处理j的最长公共子序列, 转移很简单. 现在要满足公共 ...

  7. 【NOIP2017提高A组集训10.25】摘Galo (树形dp)

    Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...

  8. 【JZOJ 5426】【NOIP2017提高A组集训10.25】摘Galo

    Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...

  9. JZOJ5426. 【NOIP2017提高A组集训10.25】摘Galo

    Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...

最新文章

  1. python 利用模板文件生成配置文件
  2. OC基础回想(十二)协议
  3. 0010服务器无对应信息,查看云服务器信息
  4. linux-基本权限-chown-chod
  5. 把样本扩增与多类标融合在一起的caffe 代码
  6. Linux系统简单实验操作rm
  7. C语言常用代码组织形式
  8. linux clone函数ptid,pthread_create到ret_fast_syscalls 参数和栈的变化
  9. WebLogic—在Eclipse上配置WebLogic Server
  10. injectcheck php_php简单实现sql防注入的方法
  11. 微信爬虫服务器,为什么现在那么多爬虫,却没有爬取微信公众号文章的案例?...
  12. KEIL5添加STC芯片库
  13. Word文档中去除EndNote格式
  14. 每天一kernel:正太概率图
  15. Android播放音乐的代码,android源代码(完整的音乐播放器)
  16. ubuntu18.10安装redshift护眼软件
  17. laravel发送邮件
  18. 基于单片机超声波视力保护系统设计-基于51单片机8音键电子琴仿真设计-基于8086八路模拟信号采集均值显示系统设计-基于8086八路数据电压温度采集系统-基于8086波形发生器仿真设计【毕设课设分享】
  19. html 5 压缩zip,Zip
  20. MacOS : 大前端必备姿势(工作环境)

热门文章

  1. 如何读懂EDIFACT报文?
  2. SpringBoot整合Drools
  3. mapboxGL入门详解
  4. Spring 测试运行的时候提示 Unable to find a @SpringBootConfiguration 错误
  5. php获取数据编码,php 获取编码和转换编码
  6. 体育直播数据网站如何运营
  7. 破解人脸识别被判七年!打击黑产,鼓励人脸识别技术健康发展
  8. 修改火狐浏览器滚动条样式
  9. 解决CTeX工具包中MikTeX编译TeX文件报错问题
  10. 互联网思维——简约思维