Description

Input

第1行,包含三个整数。n,L,R。
第2行n个数,代表a[1..n]。

Output

仅1行,表示询问答案。
如果答案是整数,就输出整数;否则,输出既约分数“P/Q”来表示。

Sample Input

5 3 4
3 1 2 4 5

Sample Output

7/2

HINT
1≤L≤R≤n≤10^5,0≤ai≤10^9,保证问题有解,数据随机生成

 
 
首先这是一个分数规划,于是我们得二分,设答案为mid,那么原数列变成a[i]-mid,然后就是要找一段使得区间和大于0
前缀和可以先预处理,然后找到满足s[j]<s[i]且i<j的j,发现满足条件的j中s[j]越小越好,于是用单调队列维护
然后得保证选的数的个数是偶数,于是开两个单调队列,分别维护位置为奇数和偶数的
 //minamoto
#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[<<],*p1=buf,*p2=buf;
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,:;}
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,:;}
int read(){
#define num ch-'0'
char ch;bool flag=;int res;
while(!isdigit(ch=getc()))
(ch=='-')&&(flag=true);
for(res=num;isdigit(ch=getc());res=res*+num);
(flag)&&(res=-res);
#undef num
return res;
}
const int N=1e5+;
int n,m,L,R,h1,h2,t1,t2;ll ans1,ans2,g,A[N<<],S[N<<];
double v[N<<],s[N<<];int q1[N<<],q2[N<<];
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
bool check(double x){
for(int i=;i<=m;++i) v[i]=A[i]-x,s[i]=s[i-]+v[i];
h1=h2=t1=,t2=,q1[]=;
for(int i=L;i<=m;++i){
while(h1<=t1&&q1[h1]<i-R) ++h1;
while(h2<=t2&&q2[h2]<i-R) ++h2;
if(!(i&)&&h1<=t1&&s[q1[h1]]<=s[i]){
ans1=S[i]-S[q1[h1]],ans2=i-q1[h1],g=gcd(ans1,ans2),ans1/=g,ans2/=g;return ;
}
if((i&)&&h2<=t2&&s[q2[h2]]<=s[i]){
ans1=S[i]-S[q2[h2]],ans2=i-q2[h2],g=gcd(ans1,ans2),ans1/=g,ans2/=g;return ;
}
if(!((i-L+)&)){
while(h1<=t1&&s[q1[t1]]>=s[i-L+]) --t1;
q1[++t1]=i-L+;
}else{
while(h2<=t2&&s[q2[t2]]>=s[i-L+]) --t2;
q2[++t2]=i-L+;
}
}
return ;
}
int main(){
// freopen("testdata.in","r",stdin);
n=read(),L=read(),R=read(),m=n<<;
double l=<<,r=;
for(int i=;i<=n;++i) A[i]=A[i+n]=read(),cmin(l,(double)A[i]),cmax(r,(double)A[i]);
for(int i=;i<=m;i++) S[i]=S[i-]+A[i];
for(int i=;i<=;++i){
double mid=(l+r)/;
check(mid)?l=mid:r=mid;
}
printf("%lld/%lld",ans1,ans2);
return ;
}

bzoj3316: JC loves Mkk(单调队列+分数规划)的更多相关文章

  1. bzoj3316 JC loves Mkk题解

    3316: JC loves Mkk Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 979  Solved: 316[Submit][Status][Di ...

  2. bzoj3316: JC loves Mkk

    Description Input 第1行,包含三个整数.n,L,R.第2行n个数,代表a[1..n]. Output 仅1行,表示询问答案.如果答案是整数,就输出整数:否则,输出既约分数“P/Q”来 ...

  3. 【BZOJ3316】JC loves Mkk 分数规划+单调队列

    [BZOJ3316]JC loves Mkk Description Input 第1行,包含三个整数.n,L,R.第2行n个数,代表a[1..n]. Output 仅1行,表示询问答案.如果答案是整 ...

  4. 【BZOJ 3316】JC loves Mkk 01分数规划+单调队列

    单调栈不断吞入数据维护最值,数据具有单调性但不保证位置为其排名,同时可以按照进入顺序找出临近较值单调队列队列两端均可删除数据但只有队末可以加入数据,仍然不断吞入数据但同时可以额外刨除一些不符合条件的数 ...

  5. 【BZOJ 1758】【WC 2010】重建计划 分数规划+点分治+单调队列

    一开始看到$\frac{\sum_{}}{\sum_{}}$就想到了01分数规划但最终还是看了题解 二分完后的点分治,只需要维护一个由之前处理过的子树得出的$tb数组$,然后根据遍历每个当前的子树上的 ...

  6. BZOJ1758: [Wc2010]重建计划(01分数规划+点分治+单调队列)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1758 01分数规划,所以我们对每个重心进行二分.于是问题转化为Σw[e]-mid>=0, ...

  7. BZOJ_4476_[Jsoi2015]送礼物_01分数规划+单调队列

    BZOJ_4476_[Jsoi2015]送礼物_01分数规划+单调队列 Description JYY和CX的结婚纪念日即将到来,JYY来到萌萌开的礼品店选购纪念礼物. 萌萌的礼品店很神奇,所有出售的 ...

  8. BZOJ 5281--[Usaco2018 Open]Talent Show(分数规划&单调队列&DP)

    5281: [Usaco2018 Open]Talent Show Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 79  Solved: 58[Sub ...

  9. [BZOJ4476][JSOI2015]送礼物[分数规划+单调队列]

    题意 题目链接 分析 分数规划之后可以得到式子:\(max-min-r*mid+l*mid\geq k*mid\) . 贪心选择,肯定区间的端点是极小或者极大值.特殊处理区间长度 \(\leq L\) ...

随机推荐

  1. 2017CodeM复赛

    A.配对游戏(loj6191) 题目: https://loj.ac/problem/6191 分析: g[i][j]表示前i个位置尽可能合并,合并到最后右边剩下j个>,这样情况的概率 那么g[ ...

  2. 11-Js类和对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. Eclipse 中 新建maven项目 无法添加src/main/java 问题

    eclipse创建maven web项目,在选择maven_archetype_web原型后,默认只有src/main/resources这个Source Floder. 按照maven目录结构,添加 ...

  4. oracle字段的所有类型

    字段类型    中文说明    限制条件    其它说明 CHAR    固定长度字符串    最大长度2000    bytes VARCHAR2    可变长度的字符串    最大长度4000   ...

  5. 如何把你的Windows PC变成瘦客户机

    越来越多的用户开始使用vmware view 4.5来做为企业桌面虚拟化的平台,通过view,所有的管理工作都转移到数据中心,但是考虑到成本原因,很多人员还在使用PC机,有没有办法将PC机变成瘦客户机 ...

  6. 总结一下CSS定位

    在CSS中,Position 属性经常会用到,主要是绝对定位和相对定位,简单的使用都没有问题,尤其嵌套起来,就会有些混乱,今记录总结一下,防止久而忘之 CSS position属性值 absolute ...

  7. poj 1258 Agri-Net(Prim)(基础)

    Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 44487   Accepted: 18173 Descri ...

  8. WebService(2)-XML系列之用Stax操作Xml

    源代码下载:链接: http://pan.baidu.com/s/1ntL1a7R password: rwp1 本文主要讲述:利用Stax处理xml文档 一.读取xml 1.基于光标的查找 核心:X ...

  9. 另外几种Java集合框架具体解释续

    另外几种Java集合框架具体解释续 作者:chszs,未经博主同意不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs fastutil库优于Trove库的 ...

  10. Android Studio keymap到Eclipse后,查找下一个同样变量快捷键Ctrl+K失效

    注:升级到0.8的版本号以后.这个快捷键能够使了,只是另一个bug,假设你用了Ctrl+F先去查找了其它的东东,再使这个快捷键去定位另外一个变量可能偶尔会不灵,不灵的话还是能够用我以下的方式来让Ctr ...