这道题看着很简单,但是题目的测试量有点大,容易超时,不能使用暴力破解
而且我个人觉得这题目四舍五入的数据怪怪的,NA好多次,最后四舍五入的数据用3以后能用了
原题如下:
内容:
放暑假了,小明想上网下载一些电影看,但是缓慢的网速令他无法忍受。他了解到了接下来的N个小时中的网速情况,想找一段连续的M个小时来下载电影,并且希望这M个小时的平均网速尽可能的大,你能编一个程序帮助他实现愿望吗?
输入输入文件第一行包含两个整数N、M,1<=M<=N<=1000000;第二行包含N个整数,表示第N个小时的网速。相邻两数之间用空格隔开。
输出输出文件仅有一行包含一个实数,表示最大的平均网速,保留小数点后两位。
样例
输入
6 3
3 6 1 5 6 4
输出
5.00
下面是代码:
#include<algorithm> #include<iostream> #include<stdio.h> using namespace std ; int main () { long int n , m ; cin >> n ; cin >> m ; static long int num =0; int cmp(int x, int y) ; long int speed[1000000]={0} ,total[1000000]={0} ; for(long int i = 0 ; i< n ; i++) { cin >> speed[i] ; } /*for(long int j = 0 ;j < (n-m) ;j++) { for(long int k=0;k<m;k++){ total[j] += speed[j+k] ; } }*/ for(long int k =0 ; k <m;k++) { total[0] +=speed[k] ; } for(long int j = 1 ;j < (n-m) ; j++) { total[j] = total[j-1]-speed[j-1] +speed[m-1+j] ; } sort(total,total+n-m,cmp) ; float answer = total[0]*1.00/m ; //float end =(int)((answer * 100) + 0.5)*1.0 / 100.0; float end = ( answer*1000 + 3 ) *1.0/1000.0; printf("%.2f",end); } int cmp(int x ,int y) { return x> y ; }
好坑的题目
时间: 2024-10-29 04:12:55