P5987 [PA2019] Terytoria / 2023NOIP A层联测13 T3 全球覆盖

题面及数据范围

对于一个点对,可以降维为线段,转化为 1 维的问题。

如图:

我们可以在横着的方向和竖着的方向个选择一种颜色的线段,任意一种选择可以构成一个合法的矩形。

我们需要求最大重叠面积,可以转化为两个一维的求最大公共线段交的问题,最后将答案相乘即为原问题。(横着选和竖着选互不干扰)

一维的问题为:

在数轴上有若干条线段,线段有一个起点和一个终点,选择这条线段或选择这条线段的补集,求最大公共交集。

先分析线段数小于 64 的情况。

我们给每一条线段左端点和右端点一个相同的值 val,val 为 2 的整数次方且每个 val 各不相同。

如图:

f[i] 为取到第 i 个点的选择情况,f[i]=f[i-1]\bigoplus val[i]。

如果 f[i] 中第 i 位为 1 表示需要选这条线段才可以选这个点。

求相同 f[i] 的点有多少即可。

如果大于 64 我们无法给每个线段分配唯一的 val 值,我们可以在 [0,2^{64}] 中随机一个数作为 val 值。

尽管可能有错误,不过根据生日悖论正确率高达 99.9936\%。

CODE

 #include<bits/stdc++.h>
 using namespace std;
 ​
 #define ull unsigned long long
 #define int long long
 #define piu pair<int,ull>
 ​
 mt19937_64 rnd(random_device{}());
 ​
 const int maxn=1e6+5;
 ​
 int n,x,y;
 int a[2][maxn];
 ​
 piu b[maxn];
 ​
 int sv(int *a,int X)
 {
     for(int i=0;i<n;i+=2)
    {
         ull v=rnd();
         b[i]=make_pair(a[i],v);
         b[i+1]=make_pair(a[i+1],v);
    }
     ull now=0;sort(b,b+n);
     unordered_map<ull,int>mp;
     b[n].first=X;
     mp[0]=b[0].first;
     for(int i=0;i<n;i++)
    {
         now^=b[i].second;mp[now]+=b[i+1].first-b[i].first;
    }
     int ans=0;
     for(auto v:mp) ans=max(ans,v.second);
     return ans;
 }
 ​
 signed main()
 {
     scanf("%lld%lld%lld",&n,&x,&y);
     n<<=1;
     for(int i=0;i<n;i++) for(int j=0;j<2;j++) scanf("%lld",&a[j][i]);
     printf("%lld",sv(a[0],x)*sv(a[1],y));
 }
 

P5987 [PA2019] Terytoria / 2023NOIP A层联测13 T3 全球覆盖的更多相关文章

  1. 「题解」PA2019 Terytoria

    本文将同步发布于: 洛谷博客: csdn: 博客园: 因为简书系统升级,所以本文未在简书上发布. 题目 题目链接:洛谷 P5987.LOJ 3320.官网. 题意概述 在二维平面直角坐标系上,有一个长 ...

  2. 学军NOI训练13 T3 白黑树

    唉,大学军有自己的OJ就是好,无限orz 只有周六的比赛是开放的囧,这场比赛最后因为虚拟机卡住没有及时提交…… 否则就能让大家看到我有多弱了…… 前两题题解写的很详细,可以自己去看,我来随便扯扯T3好 ...

  3. 基于MOD13A1的锡林郭勒草原近13年植被覆盖变化 分析

    内蒙古师范大学地理科学学院 内蒙古师范大学遥感与地理信息系统重点实验室 摘要:本研究以内蒙古锡林郭勒草原为研究区,基于MOD13A1遥感数据,经过遥感预处理,得到研究区2001-2013年共13年夏季 ...

  4. win8 下 intellij idea 13 中文输入覆盖的问题

    网上的解决方案好啰嗦,精简下如下: 设置环境变量 64位:IDEA_JDK_64 32位:IDEA_JDK 设置的value必须是JDK1.6(IDEA自带1.7版本有问题),和平时设置的JAVA_H ...

  5. Linux就这个范儿 第13章 打通任督二脉

    Linux就这个范儿 第13章 打通任督二脉 0111010110……你有没有想过,数据从看得见或看不见的线缆上飞来飞去,是怎么实现的呢?数据传输业务的未来又在哪里?在前面两章中我们学习了Linux网 ...

  6. Altium Designer中各层的含义

    1 Signal layer(信号层) 信号层主要用于布置电路板上的导线.Protel 99 SE提供了32个信号层,包括Top layer(顶层),Bottom layer(底层)和30个MidLa ...

  7. 【Protle99SE】PCB中各层的含义【小汇】

    忽然发现,对solder和paste,layer和plane这两对有些糊涂了,摘录网络中的文章如下: [http://www.360doc.com/content/10/0608/15/514342_ ...

  8. Altium Designer入门学习笔记4:PCB设计中各层的含义

    阻焊层:solder mask,是指板子上要上绿油的部分:因为它是负片输出,所以实际上有solder mask的部分实际效果并不上绿油,而是镀锡,呈银白色! 助焊层:paste mask,是机器贴片时 ...

  9. PCB各层的含义

    阻焊层:solder mask,是指板子上要上绿油的部分:因为它是负片输出,所以实际上有solder mask的部分实际效果并不上绿油,而是镀锡,呈银白色! 助焊层:paste mask,是机器贴片时 ...

  10. 声网自研传输层协议 AUT 的落地实践丨Dev for Dev 专栏

    本文为「Dev for Dev 专栏」系列内容,作者为声网大后端传输协议负责人 夏天. 针对实时互动应用对网络传输带来的新需求和新挑战,声网通过将实时互动中的应用层业务需求与传输策略的分层和解耦,于 ...

随机推荐

  1. 阿里云 ACK Pod重启:pod was OOM killed

    原因为:limits和requests的值设定为一样的了, pod request达到了limit限制,kubelet会统计到request+缓存就超限,然后触发自动重启 resources: lim ...

  2. Unable to tunnel through proxy. Proxy returns "HTTP/1.1 503 Service Unavailable"

    背景: 某日,一正常项目迁移到新的服务器 新的服务器,需要使用代理来访问之前能直接访问的接口,加完代理之后,发现无法获取数据了 报错: org.springframework.web.client.R ...

  3. 【YashanDB知识库】v$instance视图中实例角色含义不明确

    [标题]v$instance视图中实例角色含义不明确 [问题分类]文档问题 [关键词]YashanDB, v$instance, 实例角色 [问题描述]v$instance视图中实例角色(如MASTE ...

  4. VS Code – Keyboard Shortcuts

    前言 记入一些自己常用到的 Keyboard Shortcuts 和 Extensions. Keyboard Shortcuts undo redo 鼠标坐标:shift + left/right ...

  5. ASP.NET Core – Razor Pages Routing

    前言 之前有提过, MVC 和 Razor Pages 最大的区别就在 Routing 上. Razor Pages 的结构是 route, page, model route match to pa ...

  6. Vs Code, Visual Studio 2022, Angular and Live Server Running Through Https and IP Address

    前言 之前就写过 angular cli, vs code liveserver, vs 2019 iis express 10, vs code kestrel 使用 https + ip. 但写的 ...

  7. Java日期时间API系列35-----Jdk8中java.time包中的新的日期时间API类应用,微秒和纳秒等更精确的时间格式化和解析。

    通过Java日期时间API系列1-----Jdk7及以前的日期时间类中得知,Java8以前除了java.sql.Timestamp扩充纳秒,其他类最大只精确到毫秒:Java8 time包所有相关类都支 ...

  8. WebAssembly C++开发环境搭建

    WebAssembly 开发环境搭建 简介 WebAssembly 是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸 ...

  9. kotlin集合——>迭代器、区间与数列

    1.迭代器 对于遍历集合元素,Kotlin 标准库支持 迭代器 的常用机制⸺对象可按顺序提供对元素的访问权限,而 不会暴露集合的底层结构.当需要逐个处理集合的所有元素(例如打印值或对其进行类似更新)时 ...

  10. CSP-S 2022~2023 补题

    下面的代码都是远古代码,不打算重写了. CSP-S 2023 T1 密码锁 题意:一个密码锁上有 \(5\) 个位置,每个位置上的数字是 \(0 \sim 9\) 的循环,每次打乱会选择一或两个相邻位 ...