首页 > 其他分享 >ABC 355 D题Intersecting Intervals

ABC 355 D题Intersecting Intervals

时间:2024-05-27 21:10:54浏览次数:27  
标签:ABC int 线段 相交 355 端点 Intersecting

题意

  • 现在有n条线段,每条线段的左端点和右端点依次给出,求有多少对线段有交集。

思路

  • 考虑正难则反的想法,我们考虑着n条线段全部两两相交的时候,那么答案就是(n-1)*n/2,现在我们要求出有多少对线段是不相交的。
  • 当两条线段不相交的时候,显然有其中一条线段的左端点严格大于另一条线段的右端点的。所以对于上述问题,我们先对所有的右端点进行升序排序,然后O(n)遍历所有线段的左端点,通过lower_bound查找有多少右端点小于当前的左端点。

代码

int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>l[i]>>r[i];
sort(r+1,r+1+n);
int ans=(n-1)*n/2;
for(int i=1;i<=n;i++)
{
	int flag=lower_bound(r+1,r+1+n,l[i])-r-1;
	//cout<<flag<<"qwq"<<endl; 
	ans-=flag;
}
cout<<ans<<endl;

return 0;

标签:ABC,int,线段,相交,355,端点,Intersecting
From: https://www.cnblogs.com/lulu7/p/18216526

相关文章

  • AtCoder abc325D
    原题链接ProblemStatementThereare\(N\)productslabeled\(1\)to\(N\)flowingonaconveyorbelt.AKeyenceprinterisattachedtotheconveyorbelt,andproduct\(i\)enterstherangeoftheprinter\(T_i\)microsecondsfromnowandleavesit......
  • ABC341
    D-Onlyoneoftwohttps://atcoder.jp/contests/abc341/tasks/abc341_d数论,二分求第K大设\(L\)是\(N\)和\(M\)的最小公倍数。那么,有\(\lfloor\frac{X}{L}\rfloor\)个不大于\(X\)的正整数能被\(\lfloor\frac{X}{L}\rfloor\)整除,因此有\(\lfloor\frac{X}{N......
  • ABC355 D区间相交问题
    ABC355D区间相交问题题意给出n个区间,每个区间给出左端点(l)和右端点(r),判断有多少区间成对相交。分析如果我们直接暴力查找每个区间是否和别的区间相交,那么时间复杂度就是O(\(n^2\)),肯定是过不了的。考虑如何优化,通过题意,可以发现优化的关键在于区间相交的判定方式,对于任意两......
  • JINGWHALE ABCDE 概念模型系统设计建模法,用户画像进行场景化业务需求分析与归纳,帮你规
    JINGWHALE对此论文相关未知以及已知概念、定理、公式、图片等内容的感悟、分析、创新、创造等拥有作品著作权。未经JINGWHALE授权,禁止转载与商业使用。《一种基于概念模型思想的ABCDE系统设计建模法的研究与应用》张云龙(JINGWHALE数字科学艺术创新中心,浙江杭州,310......
  • 关于Scrum中的"3355"
    3355是敏捷开发中Scrum框架的一个核心概念,它代表了Scrum框架的三个角色、三个工件、五个关键事件和五个价值观。三个角色:ProductOwner(产品负责人):负责定义需求,确定需求优先级,定义需求验收标准,定义产品发布内容与日期。ScrumMaster(敏捷教练):帮助团队遵循Scrum框架,持续改进......
  • 什么是scrum中的3355?
    Scrum中的"3-3-5"是指Scrum中的一种工作时间规定,通常用于描述每个工作阶段的时间分配。"3-3-5"的含义是:3个时间框:指的是SprintPlanning、DailyScrum和SprintReview三个会议的持续时间。3周的Sprint:Sprint是Scrum中的一个迭代周期,"3"表示每个Sprint的持续时间......
  • AtCoder Beginner Contest 355(F - MST Query)
    很久没有见到这么好的题了。原题面用ChatGPT......
  • ABC355
    A.WhoAtetheCake?模拟代码实现a,b=map(int,input().split())ifa==b:print(-1)else:print(6-a-b)B.Piano2模拟代码实现#include<bits/stdc++.h>#definerep(i,n)for(inti=0;i<(n);++i)usingnamespacestd;usingP=pair<......
  • D - Intersecting Intervals
    D-IntersectingIntervals 思路对于区间重合问题,经典做法对left进行排序,然后进行统计计数。写了一版TLE,反思有冗余计数问题。计算每一个区间的覆盖数目,不需要TLE版本逐个往后数,只需要使用lower_bound找出第一个大于等于ri+1 的位置,即可得到与i区间重合区间......
  • ABC355 A ~ D
    A可能写麻烦了,但是至少它对了。#include<bits/stdc++.h>#definegtgetchar#defineptputchartypedeflonglongll;constintMAXN=2e5+5;constintmod=998244353;llread(){ llx=0,f=1;charch=gt(); while(ch<'0'||ch>'......