2023牛客暑期多校训练营9 I.Non-Puzzle: Segment Pair(tag:差分)

news2024/11/26 2:52:21

文章目录

  • 题目大意
  • 题解
  • 参考代码

题目大意


1 ≤ n , l i , r i ≤ 5 ∗ 1 0 5 1 \leq n,l_i,r_i \leq 5*10 ^5 1n,li,ri5105

题解

这题 l / r l/ r l/r 的数据在 5 × 1 0 5 5\times 10^5 5×105 ,想到差分。
特殊的是它有两条线段,对于同一个点 ,一对线段的贡献可能为 0 / 1 / 2 0/1/2 0/1/2
相交的线段单点贡献为 2 2 2 ,不相交的单点贡献为 1 1 1
我们需要维护 0 / 1 / 2 0/1/2 0/1/2 的个数,对所有的点统计答案即可。
考虑答案中有大量重复,对于一段选择方案相同的线段,应该只选一次,
提供一种新思路:
将每一条线段长度减一,即删去了该线段的一个单点贡献。
再将总答案减去计算后的结果即可,即统计右端点。
在这里插入图片描述

参考代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int N=5e5+5;
vector<pair<int,int> > f[N],g[N];
int n;
int pow2[N];
ll ans=0;
int main()
{
	pow2[0]=1;
	for(int i=1;i<N;i++)
		pow2[i]=(pow2[i-1]*2)%mod;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int l1,r1,l2,r2;
		scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
		f[l1].push_back({1,0});
		f[l2].push_back({1,0});
		f[r1+1].push_back({-1,0});
		f[r2+1].push_back({-1,0});
		int l=max(l1,l2),r=min(r1,r2);
		if(l<=r)                   //处理相交的线段
        {
            f[l].push_back({0,1});
		    f[r+1].push_back({0,-1});
        }
		r1--;                      //去除右端点
		r2--;
		g[l1].push_back({1,0});             //差分
		g[l2].push_back({1,0});
		g[r1+1].push_back({-1,0});
		g[r2+1].push_back({-1,0});
        l=max(l1,l2),r=min(r1,r2);
		if(l<=r)               
        {
            g[l].push_back({0,1});
		    g[r+1].push_back({0,-1});
        }
 	}
	int a=0,b=0;
	for(int i=1;i<N;i++)
	{
        for(int j=0;j<f[i].size();j++)
        {
            a+=f[i][j].first;
		    b+=f[i][j].second;
        }
		if(a-b==n)                      //有n条不是一对的线段重合
			ans=(ans+pow2[b])%mod;
	}
	a=0,b=0;
//    cout<<ans<<endl;
	for(int i=1;i<N;i++)
	{
        for(int j=0;j<g[i].size();j++)
        {
            a+=g[i][j].first;
		    b+=g[i][j].second;
        }
		if(a-b==n)
			ans=((ans-pow2[b]+mod)%mod+mod)%mod;
	}
	printf("%lld\n",ans);
}

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

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

相关文章

Photoshop窗口->排列菜单下进行匹配缩放/位置/旋转

首先&#xff0c;在Photoshop中打开4张以上图片&#xff0c;并选择“窗口”->“排列”->"四联"&#xff1a; 将鼠标移动至其中一张图片中&#xff0c;按住“Z”键&#xff0c;拖动鼠标&#xff0c;调整图片缩放比例至60.55%&#xff0c; 再选择“窗口”->“…

一篇打通,pytest自动化测试框架详细,从0到1精通实战(二)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 读取文件 1、读取…

Python中使用隧道爬虫ip提升数据爬取效率

作为专业爬虫程序员&#xff0c;我们经常面临需要爬取大量数据的任务。然而&#xff0c;有些网站可能会对频繁的请求进行限制&#xff0c;这就需要我们使用隧道爬虫ip来绕过这些限制&#xff0c;提高数据爬取效率。本文将分享如何在Python中使用隧道爬虫ip实现API请求与响应的技…

Grounding DINO:根据文字提示检测任意目标

文章目录 1. 背景介绍2. 方法创新2.1 Feature Extraction and Enhancer2.2 Language-Guided Query Selection2.3 Cross-Modality Decoder2.4 Sub-Sentence Level Text Feature2.5 Loss Function3. 实验结果3.1 Zero-Shot Transfer of Grounding DINO3.2 Referring Object Detec…

多线程并发服务器

代码&#xff1a; #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <unistd.h> #define PORT 6666 //1024~49151 #define IP "192.168.122.130" //ifconfig查看本机IP #include <pthread.h> //…

urllib与数据解析

urllib爬取数据 import urllib.request as request# 定义url url "https://www.baidu.com" #模拟浏览器发起请求获取响应对象 response request.urlopen(url)""" read方法返回的是字节形式的二进制数据 二进制--》字符串 解码 decode( 编码的格式…

CSDN编程题-每日一练(2023-08-14)

CSDN编程题-每日一练&#xff08;2023-08-14&#xff09; 一、题目名称&#xff1a;小股炒股二、题目名称&#xff1a;王子闯闸门三、题目名称&#xff1a;圆小艺 一、题目名称&#xff1a;小股炒股 时间限制&#xff1a;1000ms内存限制&#xff1a;256M 题目描述&#xff1a; …

一文带你拿下基于Selenium+Python的web自动化测试框架(附框架源码+项目实战)

一、什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 1.Selenium IDE&#xff1a;Fir…

Amazon EMR Hudi 性能调优——Clustering

随着数据体量的日益增长&#xff0c;人们对 Hudi 的查询性能也提出更多要求&#xff0c;除了 Parquet 存储格式本来的性能优势之外&#xff0c;还希望 Hudi 能够提供更多的性能优化的技术途径&#xff0c;尤其当对 Hudi 表进行高并发的写入&#xff0c;产生了大量的小文件之后&…

CentOS查看磁盘IO

CentOS查看磁盘IO 使用iotop命令&#xff08;top命令对应&#xff09; sudo iotop该命令将实时显示磁盘IO活动&#xff0c;按IO使用率排序&#xff0c;并显示每个进程的IO信息。 使用iostat命令&#xff1a; iostat -dx该命令将显示磁盘IO统计信息&#xff0c;包括每个设备…

【Windows 11】安装 Android子系统 和 Linux子系统

本文使用电脑系统&#xff1a; 文章目录 一、安卓子系统1.1 安装 WSA1.2 使用 二、Linux子系统2.1 安装 WSL 以及WSL 相关概念2.2 安装一个Linux发行版2.21 从Microsoft Store 安装2.22 用命令安装 2.23 拓展 三、拓展3.1 存储位置3.2 虚拟化技术3.3 Windows 虚拟内存3.3 wsl …

聊聊RedisTemplate的各种序列化器

[版权申明] 非商业目的注明出处可自由转载 出自&#xff1a;shusheng007 文章目录 概述序列化器作用和原理JDK 序列化方式多一点 String 序列化方式JSON 序列化方式 总结源码 概述 在SpringBoot中使用redis基本上都是通过Spring Data Redis&#xff0c;那就不得不说RedisTempl…

大数据--难点--地图的制作

地图一直是亮点也是难点&#xff0c;刚刚进公司的时候也很难懂~~做出来的也很难看 纯CSS3使用vw和vh视口单位实现h5页面自适应&#xff0c;gulp自动监听sass改动并保存到css中 当修改了sass里面的代码后&#xff0c;gulp会自动监听修改内容并同名保存到css文件夹中&#xff0…

MySQL8.xx一主两从复制安装与配置

搭建环境: 查看系统版本cat /etc/redhat-release [rootwww tools]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 查看内核版本cat /proc/version 目标: 一主两从 主机IP 主机名称 端口 搭建环境 安装目录192.168.1.100 docker…

祝金榜题名!64页Python基础学习手册!背完小白变大牛!

Python是一个温柔而强大的编程语言~在学习之初整个人都是小兴奋&#xff0c;学习中途遇到了各种问题但是我们坚持着。从一些基础概念的学习&#xff0c;到变量、函数、模块、流程控制、循环语句等等&#xff0c;Python的基础内容真心丰富呢~ 今天&#xff0c;给大家share一份我…

0142 存储系统2

目录 3.存储系统 3.4外部存储器 3.5高速缓冲存储器 3.6虚拟存储器 部分习题 3.存储系统 3.4外部存储器 3.5高速缓冲存储器 3.6虚拟存储器 部分习题 1.一个磁盘转速为7200转/分&#xff0c;每个磁道有160个扇区&#xff0c;每个扇区有512字节&#xff0c;则在理想情况下&…

九、多态(2)

本章概要 构造器和多态 构造器调用顺序继承和清理构造器内部多态方法的行为 协变返回类型使用继承设计 替代 vs 扩展向下转型与运行时类型信息 构造器和多态 通常&#xff0c;构造器不同于其他类型的方法。在涉及多态时也是如此。尽管构造器不具有多态性&#xff08;事实上…

JavaFx基础学习【三】:Scene

一、介绍 Scene&#xff0c;就是场景&#xff0c;在整体结构中&#xff0c;就是蓝色那一块的 为了更好的体验出什么是Scene&#xff0c;以下提供了两个不同背景颜色的Scene&#xff0c;让大家知道是在Application中是处于哪一块&#xff0c;从图中我们可以很容易看出来&#x…

CityGML程序化建模开源引擎及数据集

在攻读博士学位期间&#xff0c;我在 3D GIS 研究中遇到了以下缺点&#xff1a; 包含多个细节级别的 CityGML 数据集很少。不存在程序化生成的 CityGML 格式的数据。没有免费的程序化建模引擎。公开可用的 CityGML 模型通常包含大量&#xff08;拓扑&#xff09;错误。 推荐&a…

ME3116电源小板

最近设计一款PCB的时候使用微盟的dc dc电源ic踩了一个坑。 在使用me3116作为24v到5v的降压ic作为esp32系统前级的降压电路时&#xff0c;再没有铂电阻采样负载的情景下工作正常&#xff0c;带上负载后&#xff0c;ic工作不正常&#xff0c;过一段时间&#xff0c;后级电路会烧…