线段树-区间的交

区间的交

题目来源

孙耀峰Segment_Tree.pdf 原创

题目描述

  • 给定nnn个区间,[li,ri][l_i,r_i][li,ri],可以选出其中一些区间,设选出tottottot个,令xxx表示这tottottot个区间交的长度.
  • min{x,tot}min\{x,tot\}min{x,tot}
  • n≤105,1≤xi≤yi≤nn \le 10^5,1 \le x_i \le y_i \le nn105,1xiyin

题目解答

我们发现当tottottot增大时xxx会减小,具有单调性.

我们把线段看成是平面上二维的点(l,r)(l,r)(l,r).

那么我们考虑从小到大枚举线段的交的右端点RRR,如果,交线段的长度为xxx,那么交线段左端点就是L=R−x+1L=R-x+1L=Rx+1,而所有包含这个交线段线段(此时被表示成了数点)我们可以用一颗线段树来维护,因此我们可以很快的在线段树上找到所有l≤L且r≥Rl \le L 且 r \ge RlLrR的点的个数,这些个数就是tottottot.

考虑到x=R−L+1x = R-L+1x=RL+1是一个关于LLL减函数,而tottottot则是关于LLL的增函数.
也就是说,随着LLL的增大,xxx在增大,tottottot在减小,则显然答案min{x,tot}min\{x,tot\}min{x,tot}在满足x≤totx \le totxtot最大的LLL时取得最大值tottottot.

考虑到单调性,我们使用二分法,可以很快的找到对于一个RRR,满足x≤totx \le totxtot最大的LLL.

原题解

下面是孙耀峰聚聚的题解
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【DP】收银员

收银员 题目大意: 有n件物品,每件物品有他的扫描时间和价格,在扫描的时候可以偷物品(一个单位时间偷一件),问最少给多少钱 原题: 解题思路: 设f[j]为偷或买共j件花的最少钱&…

.Net Core小技巧 - Swagger适配虚拟目录及二级目录

前言随着前后端分离模式与微服务架构的出现,Web API变得越来越重要及普遍。而后出现的网关技术,使开发者更倾向于使用二级/多级目录来暴露Web API,一是暴露的端口更少,方便管理;二是在网关中可以处理一些公共的事务&am…

好代码是管出来的——使用Git来管理源代码

软件开发过程中一个重要的产出就是代码,软件的编码过程一般是由一个团队共同完成,它是一个并行活动,为了保证代码在多人开发中能够顺利完成,我们需要使用代码版本控制工具来对代码进行统一存储,并追踪每一份代码的历史…

定时调度系列之Quartz.Net详解

一. 背景我们在日常开发中,可能你会遇到这样的需求:"每个月的3号给用户发信息,提醒用户XXX "、"每天的0点需要统计前一天的考勤记录"、"每个月的1号计算上个月的库存情况"、"定时初始化数据供其它业务使用…

RyuJIT的华丽转身

RyuJIT是作为.NET即时编译器的代号称谓,它是.NET运行时的基本组件之一。与此相反的是,Roslyn作为C#编译器,其编译C#代码成为IL字节码。然后,其再将IL字节码编译成相对于多种处理器的机器码。随着最近对dotnet/coreclr #18064的合并…

使用Nexus搭建私有Nuget仓库

前言Nuget是ASP .NET Gallery的一员,是免费、开源的包管理工具,专注于在.Net / .Net Core应用开发过程中第三方组件库的管理,相对于传统单纯的dll引用要方便、科学得多。其中nuget.org是最著名的Nuget公开库,但是企业内部开发的&a…

好代码是管出来的——Git的分支工作流与Pull Request

上一篇文章好代码是管出来的——使用Git来管理源代码 介绍了常用的版本控制工具以及git的基本用法,从基本用法来看git与其它的版本控制工具好像区别不大,都是对代码新增、提交进行管理,可以查看提交历史、代码差异等功能。但实际上git有一个重…

【Floyed】小萨的烦恼(ssl 1624)

小萨的烦恼 ssl 1624 题目大意: 一个无向图,可以使其中一条道路的值除以2,求两个点之间的最短路 原题: Description 圣诞节又要到了!小萨希望和自己心仪的MM一起出去度过一个浪漫的的圣诞节。他进行了详尽的准备…

好代码是管出来的——使用GitHub

前面的文章介绍了Git的基本概念和用法,本文则是基于GitHub的一个实践介绍,主要内容有:GitHub简介个人与组织仓库的创建与维护Fork与pull request小结GitHub简介GitHub是一个Git的远程代码托管平台,它除了提供代码托管外&#xff0…

【模拟】正方形

正方形 题目大意: 有三个人,一人一笔的画正方形,每个正方形是上一个正方形每条边上的中点连接而成的,求每个人画了多长 原题: 题目描述 又到暑假啦,Conan, Ayumi, Mitsuhiko, Genta一起到Hakase家愉快…

.NET Core微服务之基于IdentityServer建立授权与验证服务

一、IdentityServer的预备知识要学习IdentityServer,事先得了解一下基于Token的验证体系,这是一个庞大的主题,涉及到Token,OAuth&OpenID,JWT,协议规范等等等等,园子里已经有很多介绍的文章了…

在Docker中部署Asp.net core2.1以及修改发布

本篇文章主要是如何在Docker容器中运行ASP.NET Core应用程序,以及修改系统之后,发布更新。本文章采用自定义的Docker文件系统要求:1.服务器或本地已经安装docker一、创建一个Asp.Net Core 2.1 Web应用(若可以熟练创建项目&#xf…

要用Identity Server 4 -- OAuth 2.0 超级简介

OAuth 2.0 简介OAuth有一些定义:OAuth 2.0是一个委托协议, 它可以让那些控制资源的人允许某个应用以代表他们来访问他们控制的资源, 注意是代表这些人, 而不是假冒或模仿这些人. 这个应用从资源的所有者那里获得到授权(Authorization)和access token, 随后就可以使用这个access…

好代码是管出来的——C#的代码规范

代码是软件开发过程的产物,代码的作用是通过编译器编译后运行,达到预期的效果(功能、稳定性、安全性等等),而另外一个重要作用是给人阅读。对于机器来说只要代码正确就能够正确的运行程序,但是人不同,如果代码编写混乱…

.NET Core微服务之基于IdentityServer建立授权与验证服务(续)

上一篇《.NET Core微服务之基于IdentityServer建立授权与验证服务》我们基于IdentityServer4建立了一个AuthorizationServer,并且继承了QuickStartUI,能够成功获取Token了。这一篇我们了解下如何集成API Service和MVC Web Application。一、集成API Serv…

ASP.NET Core 2.1 : 十一. 如何在后台运行一个任务

在大部分程序中一般都会需要用到后台任务, 比如定时更新缓存或更新某些状态。一、应用场景以调用微信公众号的Api为例, 经常会用到access_token,官方文档这样描述:“是公众号的全局唯一接口调用凭据,有效期目前为2个小…

好代码是管出来的——.Net中的代码规范工具及使用

上一篇文章好代码是管出来的——C#的代码规范介绍了编码标准中一些常用的工具,本篇就具体来介绍如何使用它们来完成代码管理。  本文主要内容有:Roslyn简介开发基于Roslyn的代码分析器常用的基于Roslyn的代码分析器在.Net Framework项目中使用代码分析…

P6046-纯粹容器【数学期望,组合数】

正题 题目链接:https://www.luogu.com.cn/problem/P6046 题目大意 nnn个数,每次选择两个相邻的数删除小的那个,求每个数期望存活轮数。 解题思路 相当于一条链每次缩掉一条边,我们发现其实每个点只需要考虑左右第一个比它大的就好了。定义…

探讨.NET Core的未来

本文要点与传统的.NET Framework相比,.NET Core平台具有显著的性能优势。.NET Core在Microsoft平台之外也广为采用,并受益于强大的社区参与。.NET Core在设计上采用以服务器为中心,而非聚焦于Windows。.NET Core开发受益于这种设计。.NET Cor…

【数论】分数拆分

分数拆分 题目大意: 给出一个数k,问满足1/k1/x1/y且x>y的x,y有多少对 原题: 解题思路: 首先1k1x1y\frac{1}{k}\frac{1}{x}\frac{1}{y}k1​x1​y1​,变式为1k−1y1x\frac{1}{k}-\frac{1}{y}\frac{1}{x}k1​−y1​x1​,然后再…