BZOJ_3316_JC loves Mkk_ 二分答案 + 单调队列
BZOJ_3316_JC loves Mkk_ 二分答案 + 单调队列
题意:
分析:
拆成链,二分答案,奇偶两个单调队列维护最大子段和,记录方案。
代码:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define N 200050
#define LL long long
#define du double
int n, L, R,a[N];
int Q1[N], l1, r1, Q2[N], l2, r2;
du s[N], f[N], b[N];
LL gcd(LL x,LL y){
return y?gcd(y,x%y):x;
}
LL sum[N], mxsum, cnt;
bool check(du x){
int i;
for(i = 1;i <= 2 * n; i++){
b[i] = 1.0 * a[i] - x;
s[i] = s[i - 1] + b[i];
}
l1 = r1 = l2 = r2 = 0;
Q1[0] = Q2[0] = 0;
if(s[L] >= 0) { mxsum = sum[L] ; cnt = L ; return 1; }
for(i = L;i <= 2 * n; i++){
if(i & 1){
while(l1 < r1 && i - Q1[l1] > R) l1++;
f[i] = s[i] - s[Q1[l1]];
if(f[i] >= 0) { mxsum = sum[i] - sum[Q1[l1]] ; cnt = i - Q1[l1] ; return 1; }
while(l2 < r2 && s[i - L + 1] <= s[Q2[r2 - 1]]) r2--;
Q2[r2++] = i - L + 1;
}else{
while(l2 < r2 && i - Q2[l2] > R) l2++;
f[i] = s[i] - s[Q2[l2]];
if(f[i] >= 0) { mxsum = sum[i] - sum[Q2[l2]] ; cnt = i - Q2[l2] ; return 1; }
while(l1 < r1 && s[i - L + 1] <= s[Q1[r1 - 1]]) r1--;
Q1[r1++] = i - L + 1;
}
}
return 0;
}
int main(){
scanf("%d%d%d", &n, &L, &R);
L = (L + 1) /2 *2;
R = R /2 *2;
int i;
for(i = 1;i <= n; i++){
scanf("%d", &a[i]);
a[i + n] = a[i];
sum[i] = sum[i - 1] + a[i];
}
for(i = n + 1;i <= n + n; i++){
sum[i] = sum[i - 1] + a[i];
}
du l_ = 0, r_ = 1e9;
for(i = 1;i <= 40; i++){
du mid = (l_ + r_) / 2;
if(check(mid)) l_ = mid;
else r_ = mid;
}
if(mxsum % cnt ==0){
printf("%lld\n", mxsum / cnt);
}else{
LL p = gcd(mxsum, cnt);
printf("%lld/%lld\n", mxsum / p, cnt / p);
}
}
BZOJ_3316_JC loves Mkk_ 二分答案 + 单调队列的更多相关文章
- BZOJ5090 组题 BZOJ2017年11月月赛 二分答案 单调队列
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5090 11月月赛A题 题意概括 给出n个数. 求连续区间(长度大于等于k)最大平均值. 题解 这题 ...
- [bzoj2806][Ctsc2012]Cheat(后缀自动机(SAM)+二分答案+单调队列优化dp)
偷懒直接把bzoj的网页内容ctrlcv过来了 2806: [Ctsc2012]Cheat Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1943 ...
- [CTSC2012]熟悉的文章(广义后缀自动机+二分答案+单调队列优化DP)
我们对作文库建出广义后缀自动机.考虑用\(SAM\)处理出来一个数组\(mx[i]\),表示从作文的第\(i\)个位置向左最远在作文库中出现的子串的长度.这个东西可以在\(SAM\)上跑\(trans ...
- luoguP1419 寻找段落(二分答案+单调队列)
题意 给定一个长度为n的序列a1~an,从中选取一段长度在s到t之间的连续一段使其平均值最大.(n<=100000) 题解 二分答案平均值. judge时把每一个a[i]-mid得到b[i] 在 ...
- loj 10181 绿色通道 二分答案+单调队列DP
空题段长度即为单调队列长度区间 每次二分答案进行check即可 #include<bits/stdc++.h> using namespace std; ; const int inf=0 ...
- P3957 跳房子(二分答案+单调队列优化DP)
题目链接:https://www.luogu.org/contestnew/show/4468 题目大意:跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则 ...
- 洛谷 P3957 跳房子 —— 二分答案+单调队列优化DP
题目:https://www.luogu.org/problemnew/show/P3957 先二分一个 g,然后判断: 由于转移的范围是一个区间,也就是滑动窗口,所以单调队列优化: 可以先令队尾为 ...
- [NOIP2017普及组]跳房子(二分,单调队列优化dp)
[NOIP2017普及组]跳房子 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 nn 个格子, ...
- 感染(low)bfs 、感染(mid) 二分、感染(high) 二分 + 维护单调 队列去除无用的点
感染(low) Description n户人家住在一条直线上,从左往右依次编号为1,2,-,n.起初,有m户人家感染了COVID-19,而接下来的每天感染的人家都会感染他家左右两家的人,问t天后总共 ...
随机推荐
- 【大前端攻城狮之路】JavaScript函数式编程
转眼之间已入五月,自己毕业也马上有三年了.大学计算机系的同学大多都在北京混迹,大家为了升职加薪,娶媳妇买房,熬夜加班跟上线,出差pk脑残客户.同学聚会时有不少兄弟已经体重飙升,开始关注13号地铁线上铺 ...
- 伸展树--java
文字转载自:http://www.cnblogs.com/vamei 代码转载自:http://www.blogjava.net/javacap/archive/2007/12/19/168627.h ...
- ORACLE分页SQL语句(转载)
1.根据ROWID来分select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from(select r ...
- (转)Go语言并发模型:使用 context
转载自:https://segmentfault.com/a/1190000006744213 context golang 简介 在 Go http包的Server中,每一个请求在都有一个对应的 g ...
- 如何在自定义组件中使用v-model
文章属于速记,有错误欢迎指出.风格什么的不喜勿喷. 先来一个组件,不用vue-model,正常父子通信 <!-- parent --> <template> <div c ...
- Shell脚本中获取select值
最近做一个数据清理,根据行号清理,所以需要查出这个行的最大最小值出来进行删除,如果靠手动每次去查,太麻烦所以就用在sh脚本当中执行SELECT语句,并将结果赋值给一个变量. sh脚本如下 #! /bi ...
- 实验效果展示(会声会影+FSCapture)
第一步,视频录制: 利用屏幕录制软件(Eg:FSCapture,可设定矩形区域)录制信号采集过程,存储. 第二步,视频叠加制作 1)导入视频 2)主轨,复叠轨视频安插&时序调整 3)两个视频图 ...
- Java 8 基础API的一些小的该进
Java8是一个较大改变的版本,包含了API和库方面的修正,它还对我们常用的API进行很多微小的调整, 下面我会带你了解字符串.集合.注解等新方法. 字符串 经常会遇到这样一种情况, 需要将一组字符串 ...
- mysql各种引擎对比、实战
1)存储引擎概述: (2)MySQL各大存储引擎: (3)InnoDB和MyIsam使用及其原理对比: (4)InnoDB和MyIsam引擎原理: (5)剩余引擎的使用DEMO(主要是Mrg_Myis ...
- Linux内核参数调优
用法: vim /etc/sysctl.conf #修改内容 sysctl -p #生效 相关参数仅供参考,具体数值还需要根据机器性能,应用场景等实际情况来做更细微调整. net.core.net ...