博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2933 MAX Average Problem
阅读量:5032 次
发布时间:2019-06-12

本文共 1350 字,大约阅读时间需要 4 分钟。

HDU_2933

    具体的思路可以参考。

#include
#include
#include
#define MAXD 100010typedef long long LL;int N, K, A[MAXD], q[MAXD];void cin(int &x){ char ch; while(ch = getchar(), ch < '0' || ch > '9'); x = ch - '0'; while(ch = getchar(), ch >= '0' && ch <= '9') x = (x << 3) + (x << 1) + ch - '0'; }void init(){ int i; A[0] = 0; for(i = 1; i <= N; i ++) cin(A[i]), A[i] += A[i - 1]; }void solve(){ int i, j, x, y, z, front, rear; double ans = 0; front = rear = 0; q[rear ++] = 0; for(i = K; i <= N; i ++) { while(front < rear - 1) { x = q[front], y = q[front + 1]; if((LL)(A[i] - A[x]) * (i - y) > (LL)(A[i] - A[y]) * (i - x)) break; ++ front; } ans = std::max(ans, (double)(A[i] - A[q[front]]) / (i - q[front])); q[rear] = i - K + 1; while(front < rear - 1) { x = q[rear - 2], y = q[rear - 1], z = q[rear]; if((LL)(A[z] - A[y]) * (y - x) > (LL)(A[y] - A[x]) * (z - y)) break; -- rear, q[rear] = q[rear + 1]; } ++ rear; } printf("%.2f\n", ans);}int main(){ while(scanf("%d%d", &N, &K) == 2) { init(); solve(); } return 0; }

 

 

转载于:https://www.cnblogs.com/staginner/archive/2012/09/03/2668842.html

你可能感兴趣的文章
Codeforces 887D Ratings and Reality Shows
查看>>
论文《A Generative Entity-Mention Model for Linking Entities with Knowledge Base》
查看>>
Linux记录-salt分析
查看>>
Android Studio默认快捷键
查看>>
函数式编程与参数
查看>>
SSAS使用MDX生成脱机的多维数据集CUB文件
查看>>
HDU 2191 【多重背包】
查看>>
51nod 1433 0和5【数论/九余定理】
查看>>
less 分页显示文件内容
查看>>
如何对数据按某列进行分层处理
查看>>
[Qt] this application failed to start because it could not find or load the Qt platform plugin
查看>>
Git Submodule管理项目子模块
查看>>
学会和同事相处的30原则
查看>>
文件操作
查看>>
jquery基本选择器
查看>>
hdu 1010 dfs搜索
查看>>
搭建wamp环境,数据库基础知识
查看>>
android中DatePicker和TimePicker的使用
查看>>
SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
查看>>
Codeforces Gym 100513M M. Variable Shadowing 暴力
查看>>