http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=76

题目大意:

题目前面都是废话。

给你一串基因,然后给你上面的外显子的起始和终止位置,求最长上升子序列(LIS)

并且输出这些外显子的序号

思路:

直接DP,DP更新的时候用一个数组记录当前结点上一个是什么。最后用类似并查集的方法找到最开始的那一个。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=50000+10;
struct exons
{
int begin,end;
int id;
}a[MAXN];
bool operator < (const exons &x,const exons &y)
{
return x.begin < y.begin || x.begin==y.begin && x.end < y.end;
} int dp[MAXN];
int pre[MAXN];
int ans[MAXN];
int main()
{
int n;
while(~scanf("%d",&n),n)
{
for(int i=0;i<n;i++)
{
scanf("%d%d",&a[i].begin,&a[i].end);
a[i].id=i+1;
} sort(a,a+n); memset(dp,0,sizeof(dp));
memset(pre,-1,sizeof(pre));
dp[0]=1; for(int i=1;i<n;i++)
{
for(int j=0;j<=i;j++)
{
if(a[i].begin >= a[j].end && dp[i] < dp[j]+1)
{
dp[i]=dp[j]+1;
pre[i]=j;
}
}
} int len=0;
for(int i=n-1;i!=-1;i=pre[i])
{
ans[len++]=a[i].id;
}
for(int i=len-1;i>0;i--)
printf("%d ",ans[i]);
printf("%d\n",ans[0]); //printf("%d\n",dp[n-1]);
}
return 0;
}

最新文章

  1. Spring+SpringMvc+Mybatis框架集成搭建教程
  2. sbt %%
  3. 中石油-高精度阶乘-java
  4. Centos7升级gcc学习笔记
  5. Java程序员常用工具集
  6. [转] C#中发送消息给指定的窗口,以及接收消息
  7. Android——列表选择框(Spinner)
  8. JNI编程(二) —— 让C++和Java相互调用(1)
  9. POJ 3614 Sunscreen 优先队列 贪心
  10. 设置ios中imageView图片自适应,
  11. XJOI1595空中楼阁【最短路】
  12. 201521123020《Java程序设计》第8周学习总结
  13. .net core实现redisClient
  14. MVC 向页面传值方式总结(2)
  15. 第一章 Python程序语言简介
  16. 无法创建.gitignore文件,提示必须输入文件名称
  17. Day1-python基础-变量常量
  18. Maven .m2\repository\jdk\tools\1.7 missing
  19. openvswitch 源码分析 OVS_ACTION_ATTR_HASH action
  20. bzoj 3671 贪心

热门文章

  1. Dubbo学习总结(1)——Dubbo入门基础与实例讲解
  2. 洛谷 P2782 友好城市
  3. JavaScript作用域闭包(你不知道的JavaScript)
  4. android中图片倒影、圆角效果重绘
  5. 洛谷P3374 【模板】树状数组 1(CDQ分治)
  6. Linux shell command学习笔记(一)
  7. java 之 wait, notify, park, unpark , synchronized, Condition
  8. imageView-scaleType 图片压缩属性
  9. Android平台中的三种翻页效果机器实现原理
  10. JS实现拖拽小案例