ZOJ 1076 Gene Assembly
//Gene Assembly
//DNA序列中最多gene序列
//用贪心法,先以基因头位置对基因排序,再用静态链存储、搜索
#include<iostream>
using namespace std;
#define MAX 1005
long st[MAX][2],output[MAX]; //st作为静态链表,output为输出gene的顺序而设
class Point
{
public:
long x;
long y;
long No;
bool operator<=(Point a) //重载<=为了能在合并排序中使用
{
return (x<=a.x);
}
};
//以下是合并排序
///
template <class Type>
void Merge(Type c[],Type d[],long l, long m, long r)
{
long p,k=l,i=l,j=m+1;
while(i<=m && j<=r)
if(c[i]<=c[j]) d[k++]=c[i++];
else d[k++]=c[j++];
if(j>r)
for(p=i;p<=m;p++) d[k++]=c[p];
else
for(p=j;p<=r;p++) d[k++]=c[p];
}
template <class Type>
void MergePass(Type x[],Type y[], long s, long n)
{
long i=0,j;
while(i<=n-2*s)
{
Merge(x, y, i, i+s-1,i+2*s-1);
i+=2*s;
}
if(i+s<n) Merge(x, y, i, i+s-1, n-1);
else for(j=i;j<n;j++) y[j]=x[j];
}
template <class Type>
void MergeSort(Type a[],long n)
{
Type *b=new Type [n];
long s=1;
while(s<n)
{
MergePass(a,b,s,n);
s+=s;
MergePass(b,a,s,n);
s+=s;
}
}
///
int main()
{
long i,j,k,n,state,max;
Point node[MAX];
while(cin>>n && n!=0)
{
node[0].x=0;
node[0].y=0;
node[0].No=0;
k=1;
for(i=1;i<=n;i++)
{
cin>>node[i].x>>node[i].y;
node[i].No=k++; //输入时就先把gene的序号用No记录
}
MergeSort(node,n+1);
//贪心法生成以静态链存储的树
st[0][0]=-1; //st[i][0]记录前一节点
st[0][1]=0; //st[i][1]记录层数
for(i=1;i<=n;i++)
{
max=-1;
for(j=0;j<i;j++)
{
if(node[i].x>node[j].y && max<st[j][1])
{
state=j;
max=st[j][1];
}
}
st[i][0]=state;
st[i][1]=max+1;
}
//找出最大层数的节点位置
max=0;
for(i=1;i<=n;i++)
{
if(st[i][1]>max)
{
max=st[i][1];
state=i;
}
}
//把最大链记录到output中
j=0;
while(state!=0)
{
output[j++]=node[state].No;
state=st[state][0];
}
for(i=j-1;i>=0;i--)
{
cout<<output[i];
if(i!=0)
cout<<" ";
}
cout<<endl;
}
return 0;
}
转载于:https://www.cnblogs.com/VRS_technology/archive/2010/05/11/1732299.html
ZOJ 1076 Gene Assembly相关推荐
- 神牛笔记:吉林大学ACM总结(fennec)
其实在北京比赛完的时候,我就想写了,不过还是早了点,直到上海比赛结束,大家的心中都不是太好受.郭老师有句话:你们这样做也是对的,不成功就成仁.让我的心也能安慰了不少. 我是从大一下学期开始接触ACM的 ...
- 一位学长的ACM总结(感触颇深)
发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...
- POJ ZOJ题目分类
POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...
- POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)
水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法: (1)枚举 (1753,2965) (2)贪心(13 ...
- ZOJ 题目分类,学校的一个巨巨做的。
DP: 1011 NTA 简单题 1013 Great Equipment 简单题 1024 Calendar ...
- poj题目详细分类及算法推荐题目
DP: 1011 NTA 简单题 1013 Great Equipment 简单题 1024 Calendar Game 简单题 ...
- ACM POJ 题目分类(完整整理版本)
DP: 1011 NTA 简单题 1013 Great Equipment 简单题 1024 Calendar Game 简单题 ...
- PUK ACM题目分类
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
- pku,zju题目分类
哎呦喂,直接ctrl+A了.话说浙江大学的题还见过的呢.. 公告: [意见反馈][官方博客] ural pku Zju 题目分类 收藏 感谢 mugu 的提供.... Ural Problem ...
- ICPC训练联盟2021寒假冬令营(7)_2021.01.26_笔记
文章目录 试题链接 学习笔记 - C++STL.贪心算法 C++STL 迭代器 STL算法 关联式容器 贪心算法 介绍 使用贪心法能否得到最优解,是必须加以证明的. 体验贪心法内涵的实验范例 贪心法的 ...
最新文章
- javaweb学习总结(三十二)——JDBC学习入门
- Word 2003高级技巧之可爱的锚标记
- mysql 字符串转long_把数据库中的字符串格式转为long类型
- Python---实验八
- python pp模块_python常用模块
- 翼城中学2021高考成绩查询,临汾中考分数线预测2021
- php可以单干吗_拉伸膜包装机适合包装牛肉干吗?
- 【成长之路】【python】python基础2
- 软件开发计划_软件开发的流程是怎么样的?福州IT告诉你:这五点是你需要掌握的...
- 计算机ae软件的入门教学视频教程,新手如何入门剪辑?3分钟教会你快速上手(附赠教程)...
- 计算机组装维修设置还原点,怎样恢复出厂设置组装电脑
- 水溶性CdSe/ZnS量子点PL480nm--660nm(亲水配体包裹的核/壳型荧光纳米材料)
- java俄罗斯方块英文书籍_Java版俄罗斯方块
- i春秋第二届春秋欢乐赛登山者writeup
- spark-测试模式-在windows中连接虚拟机中cdh集群的hdfs和hive和linux单机模式
- 【后端】MySQL数据库体系(一)
- python简单体育竞技模拟_【python】羽毛球竞技模拟
- 【C语言】用函数实现求两个自然数的最大公约数
- 联想收购IBM谁赚了?
- mysql 游戏 知乎_入行游戏测试之Navicat For MySQL