洛谷P1419寻找段落
2024-08-27 10:47:19
单调队列+前缀和
#include <bits/stdc++.h>
#define N 101001
using namespace std;
int n, s, t; int data[N];
double ans, temp[N], sum[N], l = -10000, r = 10000;
bool check(double a)
{
deque <int> q;
memset(sum, 0, sizeof(sum));
for (int i = 1; i <= n; i++)
temp[i] = (double) data[i] - a;
sum[0] = 0;
for (int i = 1; i <= n; i++)
sum[i] = sum[i - 1] + temp[i];
for (int i = 1; i <= n; i++)
{
if (i >= s)
{
while (q.size() && sum[i - s] < sum[q.back()])
q.pop_back();
q.push_back(i - s);
}
if (q.size() && q.front() < i - t)
q.pop_front();
if (q.size() && sum[i] >= sum[q.front()])
return true;
}
return false;
}
int main()
{
scanf("%d%d%d", &n, &s, &t);
for (int i = 1; i <= n; i++) scanf("%d", &data[i]);
while (r - l > 0.00001)
{
double mid = (l + r) / 2;
if (check(mid))
ans = l = mid;
else
r = mid;
}
// printf("%d", check(2));
printf("%.3lf\n", ans);
return 0;
}
最新文章
- Android入门(十):界面的布局方式及其实际应用
- Windows Azure Cloud Service (10) Role的生命周期
- svn(http)
- 夺命雷公狗-----React---7--组建的状态props和state
- 自定义View 实现软键盘实现搜索
- Highcharts 带有数据标签曲线图表
- 下 面 这 条 语 句 一 共 创 建 了 多 少 个 对 象 : String s=";a";+";b";+";c";+";d";;
- win7下安装maven3.1.1
- 使用 sitemesh/decorator装饰器装饰jsp页面(原理及详细配置)
- vijos1047题解
- 百度官方CDN公共库(jquery、dojo、Bootstrap)
- 【原创】大叔经验分享(13)spark运行报错WARN Utils: Service &#39;sparkDriver&#39; could not bind on port 0. Attempting port 1.
- .Net高级进阶,教你如何构建企业模型数据拦截层,动态控制字段验证
- Shell学习之环境变量配置文件(三)
- Android IPC 结篇
- 通过编写PHP代码并运用“正则表达式”来实现对试题文档进行去重复、排序
- 好文推荐系列-------(5)js模块化编程
- Python学习笔记之逻辑回归
- 洛谷P4549裴蜀定理
- 在C++中调用DLL中的函数(3)