序列型动规模板
2016-04-22 17:00
375 查看
最长上升子序列(lis)
1.O(n^2)
#include<cstdio> const int maxn=10005; int n,m; int a[maxn],b[maxn],dp[maxn],pre[maxn]; void print_lcis(int now)//输出lcis { if(pre[now]) print_lcis(pre[now]); printf("%d ",b[now]); } void solve() { int ans;//lcis在b中的末位置 for(int i=1;i<=n;i++) { int maxk=0,k=0;//到当前j为止满足1<=k<j且b[k]<b[j]的dp[k]的值以及k for(int j=1;j<=m;j++) { if(b[j]<a[i]&&dp[j]>maxk) { maxk=dp[j]; k=j; } if(b[j]==a[i]) { dp[j]=maxk+1; pre[j]=k; if(dp[j]>dp[ans]) ans=j; } } } printf("%d\n",dp[ans]); print_lcis(ans); } void init() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=m;i++) scanf("%d",&b[i]); } int main() { freopen("lcis.in","r",stdin); freopen("lcis.out","w",stdout); init(); solve(); fclose(stdin); fclose(stdout); return 0; }View Code
相关文章推荐
- [Ahoi2013]作业 解题报告
- Spring @Scheduled
- 五家公司市值超2.2万亿美元!亚马逊谷歌Facebook被评“买入”,微软苹果呢?
- 走进Scala——伴生对象(Companion Object)
- iOS之一个超赞的视频直播、第三方库,直播看这个就够了,支持RTMP推流,美颜直播
- C#中对应C++ STL
- Android开发笔记(九十一)工厂模式
- spring初涉--七大模块
- 六款值得推荐的android(安卓)开源框架简介
- 第六周总结
- 第四天
- UCOS 内存管理理解 创建任务
- LintCode:报数
- IOS开发需要知道的知识-RunLoops
- spring集成redisCluster
- 守护进程知识及示例
- 移动端H5之动态设置html的font-size的横屏BUG修复以及横屏提示 by FungLeo
- 关于iOS面试
- String封装——读时共享,写时复制
- 操作系统