选拔忧虑
2016-06-01 07:46
148 查看
选拔忧虑
Time Limit: 1000MS Memory limit: 65536K
题目描述
小白最近要参加一个小区的竞选,这个小区总共有n栋楼编号1-n,第i个楼共有A[i]个人,其中有B[i]个人是支持他选拔的,小区的委员会规定选拔的规则为:从n栋楼中选出k座编号连续的楼,这k栋楼的支持率为一个人总的支持率。支持率为k座楼支持的人的总数与k座楼的总人数之比。小白听到这个规则就是一脸懵逼,所以就去找小黑帮忙算出最大的支持率,但是小黑在忙着泡妹子,没有时间搭理他,所以友谊的小船说翻就翻。现在小白找你帮忙,你能帮他吗???输入
多组输入。每组输入两个数n和k(k<=n<=1000),接下来的一行,共有n个数表示每栋楼的总人数,接下来的一行有n个数,表示每栋楼支持的人数。每一栋楼的人数不会超过1000,保证输入合法。
输出
对于每一组输入,输出一个数,表示小白最大的支持率,结果保留4位小数。示例输入
2 2 2 3 1 3
示例输出
0.8000
提示
#include <stdlib.h>#include <math.h>
#include <string.h>
#include <algorithm>
#include <stdio.h>
using namespace std;
struct node
{
double z;
double s;
double s1;
} a[10002];
int main()
{
int n,m,i,j;
while(~scanf("%d %d",&n,&m))
{
for(i = 0; i < n; i++)
{
scanf("%lf",&a[i].z);
}
for(i = 0; i < n; i++)
{
scanf("%lf",&a[i].s);
a[i].s1 = a[i].s/a[i].z;
}
double sum1;
double sum2;
double max = 0;
for(j = 0; j <= n-m; j++)
{
sum1 = 0;
sum2 = 0;
for(i = j; i < m+j; i++)
{
sum1 = sum1+a[i].z;
sum2 = sum2+a[i].s;
}
if(max < sum2/sum1) max = sum2/sum1;
}
printf("%.4lf\n",max);
}
return 0;
}
这题一定要记住是选取临近的找最大值啊!!
代码菜鸟,如有错误,请多包涵!!
相关文章推荐
- 第二期冲刺每日站立会议——20160601
- hibernate实现的简单插入与查询
- @评论人 加 改变 字体颜色 , 和emoji 的集成
- 【编程马拉松】【006-统计一】
- 站立会议08(冲刺二)
- Javascript之计时
- Minor GC、Major GC和Full GC之间的区别(转)
- Hibernate标签总结
- 手动修改Restorator源文件告别繁琐:
- 设计模式学习--责任链模式
- Powershell 通过BING 搜索
- 冲刺第二阶段第九天
- Kali Linux Rolling 2016下Nessus Home版的安装
- MVC
- PPTP服务器配置选项详解
- 第二冲刺阶段——站立会议第八天6月1日
- 第二冲刺阶段——个人工作总结08
- [leetcode] 352. Data Stream as Disjoint Intervals 解题报告
- 陶哲轩实分析-第11章 Riemann积分
- 使用arduino安装esp8266环境