离散什么的



线段覆盖

时间限制: 1 Sec  内存限制: 128 MB

题目描述

X轴上方有若干条平行于X轴的线段,求这些线段能覆盖到的X轴的总长度?

输入

第一行一个数n(n<=1000),表示线段的个数;
接下来n行,每行两个整数ai,bi
(-10^8<=ai,bi<=10^8),代表一个线段的两个端点。

输出

输出覆盖x轴的长度。

样例输入

2
10 12
2 4

样例输出

4

这道题以前貌似做过,但这里很不一样的就是数组范围到了10^8。这个很重要啊,代表之前的简单方法不能用了,然而有个很神奇的叫离散的东西可以解决。针对数据个数不多,而数据规模大的题目,就可以用到离散。离散的思路就是重新建立一个映射,使得每个数据唯一映射到另外一个值,使得数据规模变小,那么就没问题了。对于这道题,首先立下flag,因为要记录点的情况,然后一个数组a记录起点,一个数组b记录终点,在输入时还需要一个总数组记录占的点情况,下标单数为起点偶数为终点,起初没想到后来看了老师的发现这里还可以用位运算,位运算是效率是要比加减乘除高的。
x[((i-1)<<1)+1]=a[i];
x[i<<1]=b[i];
然后对x数组进行排序sort就好但要注意后面那个加的是2倍的n。接下来将x[0]与xn赋好初值进行搜索
for(int i=1;i<=(n<<1);i++)
  if(x[i]!=x[xn]) x[++xn]=x[i];
然后二分
int fin(int c)
{
 int m,s=1,e=xn;
 while(s<=e){
  m=(s+e)>>1;
  if(x[m]==c) return m;
  if(x[m]<c) s=m+1;
  if(x[m]>c) e=m-1; 
 }
 return -1; 
}
然后标记
void cover(int s,int e){
 for(int i=s;i<e;i++)
  flag[i]=1;
}
ans为long long,从1循环到xn,如果flag标记上了,就加上x[i+1]-x[i]
最后输出
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值