The 2024 ICPC Asia EC Regionals Online Contest (II) - Problem H. Points Selection

news/2024/9/21 23:28:57

注意到如果 $\text{query}(a,b,c)$ 为真,那么 $\text{query}(\geq a,\geq b,c)$ 一定为真。

从小到大枚举询问中 $a$ 的值,按横坐标从小到大依次加入每个点,维护 $f_c$ 表示最小的 $b$ 满足 $\text{query}(a,b,c)$ 为真。

假设当前正在加入点 $(x,y,w)$,有 $f_{(c+w)\bmod n}=\min(f_{(c+w)\bmod n},\max(f_c,y))$。

观察状态转移方程可知,如果 $y\geq f_{(c+w)\bmod n}$,那么就没有更新的必要。令 $m=\max(f_0,f_1,\dots,f_{n-1})$,那么如果 $y\geq m$,则这个点是完全无用的,可以直接跳过。

由于数据随机,可以近似地认为加入 $k$ 个点后,所有 $2^k$ 个子集和模 $n$ 的结果在 $[0,n)$ 等概率均匀分布。可以看作 $2^k$ 个小球随机放入 $n$ 个洞之中,填满所有 $n$ 个洞所需的期望球数是 $O(n\log n)$,因此 $k=O(\log n)$ 时期望可以填满整个 $f$ 数组。这说明,$f$ 数组的最大值的期望值等于所有已经加入的点的纵坐标的第 $O(\log n)$ 小值,即 $O(\frac{n\log n}{k})$。

于是,加入的第 $k$ 个点的纵坐标 $y<m$ 的概率为 $O(\frac{\log n}{k})$,期望只需要更新 $O(\sum_{k=1}^n\frac{\log n}{k})=O(\log^2n)$ 遍 $f$ 数组。由于这个值并不大,每次暴力 $O(n)$ 更新整个数组即可。有了 $f$ 数组就可以很容易地求出最终的答案。

时间复杂度 $O(n\log^2n)$。

 

#include<iostream>
#include<algorithm>
using namespace std;
typedef unsigned long long ull;
const int N=500005;
int n,i,j,mx,f[N],g[N];ull suf[N],sum,ans;
struct E{int x,y,v;}e[N];
inline bool cmp(const E&a,const E&b){return a.x<b.x;}
inline void insert(int y,int v){if(y>=mx||v==n)return;for(int i=0;i<n;i++)g[i]=f[i];for(int i=0,j=v;i<n;){int tmp=max(f[i],y);if(tmp<g[j])g[j]=tmp;i++;j++;if(j==n)j=0;}mx=0;sum=0;for(int i=0;i<n;i++){f[i]=g[i];sum+=i*suf[f[i]];if(f[i]>mx)mx=f[i];}
}
int main(){ios_base::sync_with_stdio(0);cin.tie(0);cin>>n;for(i=1;i<=n;i++)cin>>e[i].x>>e[i].y>>e[i].v;sort(e+1,e+n+1,cmp);for(i=n;i;i--)suf[i]=suf[i+1]+i;for(i=0;i<n;i++)f[i]=n+1;f[0]=0;mx=n+1;for(i=j=1;i<=n;i++){while(j<=n&&e[j].x<=i){insert(e[j].y,e[j].v);j++;}ans+=sum*i;}cout<<ans;
}

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/63142.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

领导大规模敏捷Leading SAFe认证培训课

领导大规模敏捷Leading SAFe认证课

asio的buffer

ASIO的buffer理解 asio的buffer结构 任何网络库都有提供buffer的数据结构,这个就是收发数据的缓冲区。 asio提供了mutable_buffer 和 const_buffer这两个结构,他们都是一段连续的空间,首字节存储了后续数据的长度。mutable_buffer用于写服务,const_buffer用于读服务。但是这…

格林公式7

例1 计算积分 \[I=\int_Cx^2ydx-xy^2dy, \]其中C是上半圆 \(\begin{aligned} & \text{ }x^2+y^2=a^2,y\geqslant0,\text{ }\\ & \end{aligned}\) 逆时间方向 \[\begin{aligned} & \text{ }x^2+y^2=a^2,y\geqslant0,\text{ }\\ & \end{aligned} \]考虑到上半…

9.21 abc372f

容易发现平移操作,都是 \(to\) 向左平移。然后更新完了过后,\(x\) 再左移。 当然 dp 数组整体是左移的。 本题一个重点就是,假设整个 dp 不动,让我们的操作反着动。

基于AODV和leach协议的自组网络平台matlab仿真,对比吞吐量,负荷,丢包率,剩余节点个数,节点消耗能量

1.算法仿真效果 matlab2017b仿真结果如下(完整代码运行后无水印):本程序系统是《m基于matlab的AODV,leach自组网网络平台仿真,对比吞吐量,端到端时延,丢包率,剩余节点个数,节点消耗能量》的的升级。升级前原文章链接增加了运动节点的路由测试,包括定向运动,随机运动,静止…

笛卡尔坐标张量简介7

张量(tensor) 这一术语最初是用来描述弹性介质各点应力状态的,后来发展成为力学和物理学的一个有力数学工具,目前力学方面的理论性文献都不同程度地这用了这一工具 由坐标原点和三条不共面的标架直线构成的坐标系称为直线坐标系,如果三标架直线上的单位尺度相同,称为笛卡…

尝试RVC音色克隆团长音色

前言 昨晚玩剑网3突发奇想,把团长声音克隆下来,利用语音喵制作成语音DBM。 这样不管团长开不开团,打团也能有团长声音听了诶嘿嘿。 于是当场关闭游戏声音录了打本的素材,本文就边做边记录。 下载 在B站找到了这个教程: 【你的声音,现在是我的了!】https://www.bilibili.…