【BZOJ 3316】JC loves Mkk 01分数规划+单调队列
单调栈
不断吞入数据维护最值,数据具有单调性但不保证位置为其排名,同时可以按照进入顺序找出临近较值
单调队列
队列两端均可删除数据但只有队末可以加入数据,仍然不断吞入数据但同时可以额外刨除一些不符合条件的数据,强调额外刨除数据按照进入顺序,维护在有额外刨除条件下的最值,数据具有单调性但不保证位置为其排名也不保证都是合法,丧失可以按照进入顺序找出临近较值的能力
#include <cstdio>
typedef long double ld;
typedef long long ll;
const ld eps=1e-;
const int N=;
int q[N];
ld key[N<<];
int head,tail;
int n,L,R;
int a[N],ans1,ans2;
inline bool check(ld x){
for(int i=;i<=n;++i)
key[i]=key[i+n]=(ld)a[i]-x;
for(int i=;i<=(n<<);++i)
key[i]+=key[i-];
head=,tail=;
for(int i=L;i<=R;i+=){
while(head<=tail&&key[q[tail]]<key[i])tail--;
q[++tail]=i;
}
if(key[q[head]]>){
ans1=,ans2=q[head];
return true;
}
for(int i=;i<=n;i+=){
while(head<=tail&&key[q[tail]]<key[i+R-])tail--;
q[++tail]=i+R-;
while(head<=tail&&q[head]<(i+L-))head++;
if(key[q[head]]-key[i-]>){
ans1=i,ans2=q[head];
return true;
}
}
head=,tail=;
for(int i=L+;i<=R+;i+=){
while(head<=tail&&key[q[tail]]<key[i])tail--;
q[++tail]=i;
}
if(key[q[head]]-key[]>){
ans1=,ans2=q[head];
return true;
}
for(int i=;i<=n;i+=){
while(head<=tail&&key[q[tail]]<key[i+R-])tail--;
q[++tail]=i+R-;
while(head<=tail&&q[head]<(i+L-))head++;
if(key[q[head]]-key[i-]>){
ans1=i,ans2=q[head];
return true;
}
}
return false;
}
inline ll GCD(ll x,ll y){
return x==?y:GCD(y%x,x);
}
int main(){
scanf("%d%d%d",&n,&L,&R),L+=L&,R-=R&;
for(int i=;i<=n;++i)scanf("%d",&a[i]);
for(ld l=,r=1e9,mid;l+eps<=r;mid=(l+r)/.,check(mid)?l=mid:r=mid);
if(ans1==){printf("");return ;}
ll s=,b=ans2-ans1+;
for(int i=ans1;i<=ans2;++i)s+=a[i>n?i-n:i];
ll gcd=GCD(s,b);s/=gcd,b/=gcd;
if(b==)printf("%lld",s);
else printf("%lld/%lld",s,b);
return ;
}
【BZOJ 3316】JC loves Mkk 01分数规划+单调队列的更多相关文章
- P6087 [JSOI2015]送礼物 01分数规划+单调队列+ST表
P6087 [JSOI2015]送礼物 01分数规划+单调队列+ST表 题目背景 \(JYY\) 和 \(CX\) 的结婚纪念日即将到来,\(JYY\) 来到萌萌开的礼品店选购纪念礼物. 萌萌的礼品店 ...
- BZOJ 5281--[Usaco2018 Open]Talent Show(分数规划&单调队列&DP)
5281: [Usaco2018 Open]Talent Show Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 79 Solved: 58[Sub ...
- BZOJ_4476_[Jsoi2015]送礼物_01分数规划+单调队列
BZOJ_4476_[Jsoi2015]送礼物_01分数规划+单调队列 Description JYY和CX的结婚纪念日即将到来,JYY来到萌萌开的礼品店选购纪念礼物. 萌萌的礼品店很神奇,所有出售的 ...
- 【BZOJ3316】JC loves Mkk 分数规划+单调队列
[BZOJ3316]JC loves Mkk Description Input 第1行,包含三个整数.n,L,R.第2行n个数,代表a[1..n]. Output 仅1行,表示询问答案.如果答案是整 ...
- BZOJ.4819.[SDOI2017]新生舞会(01分数规划 费用流SPFA)
BZOJ 洛谷 裸01分数规划.二分之后就是裸最大费用最大流了. 写的朴素SPFA费用流,洛谷跑的非常快啊,为什么有人还T成那样.. 当然用二分也很慢,用什么什么迭代会很快. [Update] 19. ...
- BZOJ.4753.[JSOI2016]最佳团体(01分数规划 树形背包DP)
题目链接 \(Description\) 每个点有费用si与价值pi,要求选一些带根的连通块,总大小为k,使得 \(\frac{∑pi}{∑si}\) 最大 \(Solution\) 01分数规划,然 ...
- bzoj 3232: 圈地游戏 01分数规划
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=3232 题解: 首先我们看到这道题让我们最优化一个分式. 所以我们应该自然而然地想到01分 ...
- bzoj 3232 圈地游戏 —— 01分数规划+最小割建图(最大权闭合子图)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 心烦意乱的时候调这道题真是...越调越气,就这样过了一晚上... 今天再认真看看,找出 ...
- BZOJ 4753 [Jsoi2016]最佳团体 ——01分数规划 树形DP
要求比值最大,当然用分数规划. 二分答案,转化为选取一个最大的联通块使得它们的和大于0 然后我们直接DP. 复杂度$O(n^2\log {n})$ #include <map> #incl ...
随机推荐
- Hadoop(25)-高可用集群配置,HDFS-HA和YARN-HA
一. HA概述 1. 所谓HA(High Available),即高可用(7*24小时不中断服务). 2. 实现高可用最关键的策略是消除单点故障.HA严格来说应该分成各个组件的HA机制:HDFS的HA ...
- hadoop2.7.2集群搭建
hadoop2.7.2集群搭建 1.修改hadoop中的配置文件 进入/usr/local/src/hadoop-2.7.2/etc/hadoop目录,修改hadoop-env.sh,core-sit ...
- 2.3 进程控制之exec函数族
学习目标:学习使用exec函数族的重要的几个函数 一.引言 进程通过exec函数根据指定的文件名或目录名执行另一个可执行文件,当进程调用exec函数时,该进程的数据段.代码段和堆栈段完全被新程序替换 ...
- python快速改造:基础知识
改造"Hacking"并不同于破坏"cracking" python快速改造:基础知识 一行就是一行,不管多少,不用加分号 交互式python解释器可以当作计算 ...
- 嵌入式框架Zorb Framework搭建三:列表的实现
我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...
- python2.7入门---异常处理
python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.我们可以使用该功能来调试python程序. 异常处理. 断言(Assertions). 首先来看py ...
- Vue 去脚手架插件,自动加载vue文件,style怎么办
书接上上会,因为当时也没想好怎么办,所以装聋作哑的忽略了Vue文件中的Style,Vue的做法我看着晕乎乎的,细想的话,无非就是自动填写到dom中,所担心的无非是命名冲突. 在一个项目中(像我这种自娱 ...
- springmvc+mybatis的两种配置和应用方式
一.不用写dao层实现的方式 1.导入依赖包,我的pom.xml文件配置如下: <project xmlns="http://maven.apache.org/POM/4.0.0&qu ...
- 响应式js设置
<script> (function anonymous() { // 声明一个函数,并直接的执行 function computed() { let HTML = document.do ...
- How to find your web part
When we deploy a web part, we can find it on any pages through the follow steps: Firstly, ...