洛谷—— P1419 寻找段落
https://www.luogu.org/problem/show?pid=1419
题目描述
给定一个长度为n的序列a_i,定义a[i]为第i个元素的价值。现在需要找出序列中最有价值的“段落”。段落的定义是长度在[S,T]之间的连续序列。最有价值段落是指平均值最大的段落,
段落的平均值=段落总价值/段落长度。
输入输出格式
输入格式:
第一行一个整数n,表示序列长度。
第二行两个整数S和T,表示段落长度的范围,在[S,T]之间。
第三行到第n+2行,每行一个整数表示每个元素的价值指数。
输出格式:
一个实数,保留3位小数,表示最优段落的平均值。
输入输出样例
3 2 2 3 -1 2
1.000
说明
【数据范围】
对于30%的数据有n<=1000。
对于100%的数据有n<=100000,1<=S<=T<=n,-10000<=价值指数<=10000。
【题目来源】
tinylic改编
二分一个平均值,求出a[i]-x,在长度为[s,t]的区间的和为正,则说明x可以更小、
可以用单调递增队列维护编号在i-t,i-s的区间前缀和,则需判断sum[j]-sum[i]是否>=0
1 #include <cstdio> 2 3 inline void read(int &x) 4 { 5 register bool __=0; register char ch=getchar(); 6 for(; ch>'9'||ch<'0'; ch=getchar()) if(ch=='-') __=1; 7 for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0'; 8 x=__?((~x)+1):x; 9 } 10 const int N(100000+5); 11 const int INF(10000); 12 int n,s,t,a[N]; 13 14 int head,tail,que[N]; 15 double l,r,mid,ans,sum[N]; 16 inline bool check(double x) 17 { 18 sum[0]=0; 19 for(int i=1; i<=n; ++i) sum[i]=sum[i-1]+a[i]-x; 20 head=1; tail=0; 21 for(int i=1; i<=n; ++i) 22 { 23 if(i>=s) 24 { 25 for(; head<=tail&&sum[i-s]<sum[que[tail]]; ) --tail; 26 que[++tail]=i-s; 27 } 28 if(head<=tail&&que[head]<i-t) head++; 29 if(head<=tail&&sum[i]-sum[que[head]]>=0) return 1; 30 } 31 return false; 32 } 33 34 int Presist() 35 { 36 read(n),read(s),read(t); 37 for(int i=1; i<=n; ++i) read(a[i]); 38 for(l=-INF*1.0,r=1.0*INF; l+1e-5<r; ) 39 { 40 mid=(l+r)/2.0; 41 if(check(mid)) l=mid; 42 else r=mid; 43 } 44 printf("%.3lf\n",l); 45 return 0; 46 } 47 48 int Aptal=Presist(); 49 int main(int argc,char*agrv[]){;}
转载于:https://www.cnblogs.com/Shy-key/p/7583135.html
洛谷—— P1419 寻找段落相关推荐
- 【题解】P1419 寻找段落(二分+单调队列)难度⭐⭐⭐★
P1419 寻找段落 首先二分答案,即:二分最大平均值. 我们将a全部减去mid,问题转化为判断是否存在一个长度在s~t范围内的区间它的和为正,如果有说明还有更大的平均值. 用前缀和和单调队列维护. ...
- 洛谷 P2296 寻找道路
感慨 周五比赛的测试题,结果到比赛结束也没有读懂题意...给的样例太少了,我一直以为我是不是spfa敲错了...没想到中间还有卡的地方 分析 题目中的一句耐人寻味的话"路径上的所有点的出边所 ...
- 洛谷2296 寻找道路
题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满 ...
- P1419 寻找段落
知识点:二分,前缀和,单调队列 难度:4 这个题还算绿题里面可以,其实就是二分+最大子列和,然后这个子列和问题是长度在某个区间的,其实和长度不超过某值的求法类似,长度不超过某值的最大子列和问题其实就是 ...
- 洛谷 B3618 寻找团伙
# 暴力or状态压缩or线性基 题意:给定 n 个员工,以及员工的能力总数 k , 每个员工 i 有 种能力,第 j 种能力 可以提供 的分值.从 n 个员工中选出 m 个员工时,如果这 m 个员 ...
- 洛谷or牛客数据结构+算法
栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...
- 洛谷P1246C语言,codevs1246 丑数
题目描述 Description 对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合.这个集合包括,p1, p1p2, p1p1, 和 p1p2 ...
- 数论:扩展欧几里德(洛谷P1516 青蛙的约会)
欧几里德 基本思想:gcd(q,r)=gcd(r,q%r); 证明,设q.r的最大公因数为a,则q=xa,r=ya,xy互质 不妨设x>y(显然如果小于会在一次gcd运算后交换) 则q%r=(x ...
- 信息学奥赛一本通 1311:【例2.5】求逆序对 | 1237:求排列的逆序数 | OpenJudge NOI 2.4 7622:求排列的逆序数 | 洛谷 P1908 逆序对
[题目链接] ybt 1311:[例2.5]求逆序对 ybt 1237:求排列的逆序数 OpenJudge NOI 2.4 7622:求排列的逆序数 洛谷 P1908 逆序对 ybt 1311,123 ...
- 信息学奥赛一本通 2005:【20CSPJ普及组】直播获奖 | 洛谷 P7072 [CSP-J2020] 直播获奖
[题目链接] ybt 2005:[20CSPJ普及组]直播获奖 洛谷 P7072 [CSP-J2020] 直播获奖 [题目考点] 计数排序(桶排序) 其核心为:设计数数组c,c[i]表示数字i出现的个 ...
最新文章
- linux下将多个文件去除文件头合并_shell命令实现当前目录下多个文件合并为一个文件的方法...
- SpringBoot使用prometheus监控
- 页面宽高,窗口宽高,元素宽高,元素位置,页面滚动距离
- 开发日记-20190523 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
- 全球及中国生物仿制药淋巴细胞调节剂行业需求潜力分析及及投资规划研究报告2021-2027年
- 如何更改vs默认调试浏览器
- Core Java笔记 6.部署应用程序
- .NET工程师的书单
- 开源个.NetCore写的 - 并发请求工具PressureTool
- “相当一部分”HPE公司OpenStack工作人员被转移至SUSE
- 关于SIGPIPE导致的程序退出
- 回望2017:一个前端从业者砥砺前行的一年
- Leetcode 27 Remove Element
- oracle developer连接access
- 服务器刷课源码,国开刷课
- Ubuntu22.04运行网易云音乐错误
- 世界杯直播背后的黑科技 腾讯云极速高清技术驱动体育直播发展
- 什么是CIF?什么是4CIF?什么是QCIF?什么是D1?
- python画反比例函数_拟合一个反比例函数
- Account-login
热门文章
- 论文阅读-2017-Vidal-NEARP
- poj - 2586 - Y2K Accounting Bug
- TreeUtil(树形结构转换)
- php后台会员卡管理,实用PHP会员权限控制实现原理分析
- sudo: /etc/sudoers is world writable sudo: no valid sudoers sources found, quitting sudo: 解决方法
- 树莓派 更换键盘 2020_魔改售价2000多元的HHKB键盘!蓝牙双模+外接TF卡+树莓派ZERO...
- 20210218CTF伪协议绕过file_get_contents(bugkuctf的web21御结冰城感想)
- 【数学分析】集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )
- 技术领导力 程序员如何才能带团队 文摘 (三)
- 给要入门量化分析的人一些建议(转)