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