OpenJudge计算概论-细菌实验分组
/*====================================================
细菌实验分组
总时间限制: 1000ms 内存限制: 65536kB
描述
有一种细菌分为A、B两个亚种,它们的外在特征几乎完全相同,仅仅在繁殖能力上有显著差别,A亚种繁殖能力非常强,B亚种的繁殖能力很弱。在一次为时一个 小时的细菌繁殖实验中,实验员由于疏忽把细菌培养皿搞乱了,请你编写一个程序,根据实验结果,把两个亚种的培养皿重新分成两组。
输入
输入有多行,第一行为整数n(n≤100),表示有n个培养皿。
其余n行,每行有三个整数,分别代表培养皿编号,试验前细菌数量,试验后细菌数量。
输出
输出有多行:
第一行输出A亚种培养皿的数量,其后每行输出A亚种培养皿的编号,按繁殖率升序排列。
然后一行输出B亚种培养皿的数量,其后每行输出B亚种培养皿的编号,也按繁殖率升序排列。
样例输入
5
1 10 3456
2 10 5644
3 10 4566
4 20 234
5 20 232
样例输出
3
1
3
2
2
5
4
提示
亚种内部,细菌繁殖能力差异远远小于亚种之间细菌繁殖能力的差异。
也就是说,亚种间任何两组细菌的繁殖率之差都比亚种内部两组细菌的繁殖率之差大。
解析:所谓繁殖率:是指种群中每一个体平均产生下一代的个体数。
有时也用一个个体在单位时间内产生的个体数来表示。
按照这个思路,繁殖率是用后来的数量z与原来的数量y之差除以原来的数量y,表示为(z-y)/y。
按照这个思路设计的程序,对输入输出案例都没对,但竟然AC了,无语中……
======================================================*/
#include<stdio.h>
struct PeiYangMin
{
int No;
double fanZhiLv;
};
void BubbleSort(struct PeiYangMin a[],int n);//对数组a[]的前n个元素按繁殖率进行非递减排序
int main()
{
int n,i;
struct PeiYangMin a[];
int x,y,z;
int max=;
int maxI=;
double t;
freopen("6.in","r",stdin);
//freopen("6.out","w",stdout);
scanf("%d",&n);
for(i=;i<n;i++)
{
scanf("%d%d%d",&x,&y,&z);
a[i].No=x;
a[i].fanZhiLv=(z-y)/y;
//a[i].fanZhiLv=z-y;
}
BubbleSort(a,n);
for(i=n-;i>;i--)
{
t=a[i].fanZhiLv-a[i-].fanZhiLv;
if(t>max)
{
max=t;
maxI=i;
}
}
printf("%d\n",n-maxI);//输出A组的个数
for(i=maxI;i<n;i++)
{
printf("%d\n",a[i].No);
}
printf("%d\n",maxI);//输出B组的个数
for(i=;i<maxI;i++)
{
printf("%d\n",a[i].No);
}
return ;
}
void BubbleSort(struct PeiYangMin a[],int n)
{//对数组a[]的前n个元素进行非递减排序
int i,j;
struct PeiYangMin temp;
for(i=;i<n;i++)
{
for(j=;j<n-i;j++)
{
if(a[j].fanZhiLv>a[j+].fanZhiLv)
{
temp=a[j];
a[j]=a[j+];
a[j+]=temp;
}
}
}
}
OpenJudge计算概论-细菌实验分组的更多相关文章
- OpenJudge计算概论-细菌的战争
/*====================================================================== 细菌的战争 总时间限制: 1000ms 内存限制: 6 ...
- OpenJudge计算概论-取石子游戏
OpenJudge计算概论-取石子游戏[函数递归练习] /*====================================================================== ...
- Openjudge计算概论——数组逆序重放【递归练习】
/*===================================== 数组逆序重放 总时间限制:1000ms 内存限制:65536kB 描述 将一个数组中的值按逆序重新存放. 例如,原来的顺 ...
- OpenJudge计算概论-计算书费
/*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算 ...
- OpenJudge计算概论-最高的分数
/*======================================================== 最高的分数 总时间限制: 1000ms 内存限制: 65536kB 描述 孙老师 ...
- OpenJudge计算概论-比饭量【枚举法、信息数字化】
/*====================================================================== 比饭量 总时间限制: 1000ms 内存限制: 655 ...
- OpenJudge计算概论-鸡尾酒疗法
/*===================================== 鸡尾酒疗法 总时间限制: 1000ms 内存限制: 65536kB 描述 鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HA ...
- Openjudge计算概论-角谷猜想
/*===================================== 角谷猜想 总时间限制: 1000ms 内存限制: 65536kB 描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数 ...
- OpenJudge计算概论-字符串最大跨距
/*====================================================================== 字符串最大跨距 总时间限制: 1000ms 内存限制: ...
随机推荐
- git相关的一篇不错的文章
原文地址:http://josh-persistence.iteye.com/blog/2215214 点击进入
- 异常-java.util.concurrent.TimeoutException: Futures timed out after [100000 milliseconds]
1 详细异常 java.util.concurrent.TimeoutException: Futures timed out after [100000 milliseconds] at scala ...
- HTTP 协议部分常识简介
1.状态码 具体的状态码可以百度查找,但是对于状态码的大致分类有一个清楚的了解 1XX ----信息状态码------接受的请求正在处理 2XX ------成功状态码 ------请求正常处理完 ...
- 20.Vue中获取DOM元素和组件
1.获取DOM元素和组件:this.$refs
- Jenkins手把手图文教程[基于Jenkins 2.164.1]
原文:http://www.itmuch.com/work/jenkins-in-action/ 一.下载 前往https://jenkins.io/download/ ,按需下载.如用于生产,建议下 ...
- linux网络编程之进程间通信介绍
从今天起,开始学习进程间通信相关的东东,关于socket的编程先告一段落了,在学习进程间通信之前,首先先要了解一些概念,所以,这次不开始真正的代码编写,先纯理论,理解了为之后的更深入的学习可以打下良好 ...
- 【PAT-并查集-水题】L2-007-家庭房产
L2-007. 家庭房产 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下 ...
- Java8新特性--Optional
Java 8引入了一个新的Optional类.Optional类的Javadoc描述如下: 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会 ...
- springMvc--接受请求参数
作者:liuconglin 接收基本类型 表单: <h1>接受基本类型参数到Controller</h1> <form action="/param/test& ...
- 怎么才能零基础彻底学会Java
21世纪进入信息时代,信息科技给人类的生产和生活方式带来了深刻的变革,信息产业已成为推动国家经济发展的主导产业之一,Java编程语言作为含金量极高的一门IT技术,很多人希望从事这个行业,那么想学好Ja ...