首页 > 其他分享 >luogu P1419 题解

luogu P1419 题解

时间:2023-09-08 22:25:54浏览次数:40  
标签:P1419 10 斜率 ed 题解 决策 st leq luogu

题目链接

description

给定一个长度为 \(n\) 的序列(值域为 \([-10^4,10^4]\))和正整数 \(st,ed\)。

求一个区间,使得其长度 \(\in [st,ed]\) 且平均值最大,输出平均值。

\(1\leq n\leq 10^5\)

solution

这里给出一个复杂度线性的做法。

求出前缀和数组 \(s\),

答案相当于 \(\max\limits_{1\leq i\leq n}\max\limits_{0\leq j \leq i}\{\dfrac{s_i-s_j}{i-j}\}(st\leq i-j\leq ed)\)

以序列下标为自变量,\(s\) 数组的值为因变量建立平面直角坐标系坐标系。

那么这个分式就表示直线的斜率

分情况讨论(不难讨论但稍有些麻烦,此处略去)可知,所有可能成为最优决策的决策点之间以及和当前点 \((i,s_i)\) 之间,相邻两点所在直线的斜率应单调递增。即当前状态和可能的最优决策点组成下凸壳。

(如图所示)

加入一个决策点时,从队尾弹出所有非法的决策点后加入决策点。

求当前的状态的最优决策点时,我们只需从队头扫,找到和当前点斜率最大的决策点即可。(临界状态应该是此时的斜率恰小于当前决策点和下一个决策点的斜率)

我们可以边扫描边将决策点从队首弹出。

这会不会导致后面的某些状态的最优决策点被误弹出呢?

不难发现,状态的纵坐标是单调递增的(前缀和),所以不会出现这种问题(某些题目里不能保证这个性质的话需要在凸壳上二分)。

每个决策点至多出入队一次

时间复杂度 \(O(n)\)

一些闲话

(本文是两个月前写的,忘记发了qwq)

代码不放了吧。

计算斜率要注意 double 的精度。如果用交叉相乘计算的话要注意会不会爆 long long

标签:P1419,10,斜率,ed,题解,决策,st,leq,luogu
From: https://www.cnblogs.com/FreshOrange/p/17688640.html

相关文章

  • 【题解】CF1830A Copil Copac Draws Trees
    你考虑对于每一条边打上时间标记,然后在树上DFS的时候维护一下以\(u\)为根的答案即可,然后将答案合并,反正很简单,看代码就懂。code:#include<bits/stdc++.h>usingnamespacestd;constintNN=2e5+8;intt,n;structEdge{ intto,next,val;}edge[NN<<1];inthead[......
  • 【题解】CF1854E Game Bundles
    你考虑我们需要构造出一组解,显然地这样的解有很多很多种(\({60^{60}}\)显然是及其地大)。那关键是我们如何进行构造。我们很容易知道每个集合里面\(>30\)的数只有一个。所以我们可以在\([1,30]\)中随机\(a_i\),直到满足的组数恰好小于等于\(a_i\),添加的时候维护数组\(f_i......
  • 【题解】CF1854D Michael and Hotel
    交互题。考虑题意即为找到\(1\)所在内向基环树上的所有点。我们考虑我们怎么找到环上的点,我们考虑我们可以\(O(\logn)\)询问到一个环上的点,方法即为将\(k\)定为一个大数,然后二分点集。然后我们便可以在\(O(n\logn)\)的时间复杂度内找到所有环上的点(我们一会儿再讲怎......
  • 【题解】CF1854C Expected Destruction
    你考虑,我们如果没有重合就将元素删去的操作,我们就有答案:\(n\times(m+1)-\sum\limits_{i=1}^na_i\)但是,我们显然最后的答案是小于这个的,如果有两个数在\(i\)相撞,那么我们的答案就会减少\((m-i+1)\)我们设\(f_{i,j}\)表示两个数分别在\(i\)和\(j\)的概率\((i\leqj......
  • 【疑难解决】运行EasyRTSPSever组件提示程序无法启动问题解决
    RTSP协议以客户服务器方式工作,它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,如:暂停/继续、后退、前进等。因此RTSP又称为“因特网录像机遥控协议”。我们的RTSP-Sever组件EasyRTSPSever就是一款比较便捷的组件。我们有开发者在测试EasyRTSPS......
  • live555作为RTSP流媒体服务器时Server端多track而客户端仅请求一个track,当客户端关闭
    当我们使用live555作为流媒体服务器时,某个通道对应的所有客户端断开后,不能正常回调关闭。某一通道同时支持视频和音频输出,即video和audio两个trackVLC和EasyPlayer播放库来中的RTSPClient则都会请求(所以不存在问题);而某些客户端则只请求了一个track,比如video;此时再关闭......
  • live555做流媒体服务器时解决rtp over udp模式下, 客户端没有发送teardown时直接关闭
    在我们使用live555作为RTSP服务器时,客户端在rtpoverudp模式下,rtsp客户端没有发送teardown而直接断开连接时需要等待65秒才回调关闭的问题。分析问题在RTSPClientConnection中没有保存相应的session值,所以在RTSPClientConnection断开时,并没有删除相应的RTSPClientSession;解......
  • 【题解】CF1854B Earn or Unlock
    你考虑,我们很容易地可以构造一个\(n^2\)的DP:\(f_{i,j}\)表示当前在\(i\)张牌,还可以摸\(j\)张牌的最大分数。转移也很好转移,你考虑一眼就会。但是我们显然要缩减复杂度,我们看到数据范围\(10^5\),想到了根号。分块???显然不行。莫队???都没有区间查询,怎么行呢?然后你苦思冥想......
  • 【题解】AtCoder Regular Contest 161
    评价:感觉这场题目质量不咋地啊,都是一些乱搞题A.MakeM题目描述:\(N\)是一个正奇数。我们称一个长度为\(N\)的序列\(S\)是M型序列,当前仅当对于所有的\(i=2,4,6,\dots,N-1\)(即偶数位),都有\(S_{i-1}<S_{i}\)且\(S_{i}>S_{i+1}\)。现在给定你一个长度为\(N\)的序列\(A......
  • CF613D 题解
    一、题目描述:给你一颗$n$个点的树,有$m$组询问。一个点如果被攻占,那么这个点就不能通行了。第$i$次询问给出$k_i$个关键点,关键点不能被攻占。求最少攻占多少个点可以使得关键点两两不连通。若不可能,输出$-1$。数据范围:$1\len,m\le1\times10^5......