考虑三个树枝:a,b,c
若c是将要抛出的树枝,那么形成三角形的条件是
a+b>c and a-b<c 可以写成 c属于开区间(a-b,a+b)
对于每个C和许许多多的其他边,如何保证C不构成三角形?
可以看到:对于每个a,要使得这个(a-b,a+b)尽可能的大,就要让b在小于a的基础上尽可能地大
那么我们可以排序等到n-1个这样的区间。只要C不在这些区间内,就一定不会构成三角形。
那么问题转化为区间问题了。
我们把包含在(L,R)区间且不与以上的所有区间相交的部分累加起来就得到了结果
首先离散化,-1代表进区间,1代表出区间
1.当上一个区间已经出来而进入下一个区间时,两个区间中间的部分可以积累
2.L到第一个区间的左边界可以积累
3.最后一个区间的有边界到R可以积累

#include <bits/stdc++.h>
#define MP(x,y) make_pair(x,y)
using namespace std;
typedef long long LL;
const int Max=1e5+;
LL A[Max];
pair<LL,LL> B[Max*];
int main()
{
int T;
for(scanf("%d",&T);T;T--)
{
int n;
LL L,R;
scanf("%d%I64d%I64d",&n,&L,&R);
for(int i=;i<n;i++)
{
scanf("%I64d",&A[i]);
}
sort(A,A+n);
int top=;
for(int i=;i<n;i++)
{
B[top].first=A[i]-A[i-];
B[top].second=-;
top++;
B[top].first=A[i]+A[i-];
B[top].second=;
top++;
}
sort(B,B+top);
int count=;
LL pre=,ans=,dis,disr,disl;
for(int i=;i<top;i++)
{
if(count==)
{
disr=min(R,B[i].first);
disl=max(L,pre);
dis=disr-disl+;
if(dis>=) ans+=dis;
}
count+=B[i].second;
pre=B[i].first;
}
disr=R;disl=max(L,pre);
dis=disr-disl+;
if(dis>=) ans+=dis;
printf("%I64d\n",ans);
}
return ;
}

hdu 5720的更多相关文章

  1. hdu 5720 Wool

    hdu 5720 问题描述 黎明时,Venus为Psyche定下了第二个任务.她要渡过河,收集对岸绵羊身上的金羊毛. 那些绵羊狂野不驯,所以Psyche一直往地上丢树枝来把它们吓走.地上现在有n n ...

  2. hdu 5720 BestCoder 2nd Anniversary Wool 推理+一维区间的并

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5720 题意:有n(n <= 105)个数 ,每个数小于等于 1018:问在给定的[L,R]区间中 ...

  3. hdu 5720(贪心+区间合并)

    Wool Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Subm ...

  4. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  6. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  7. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  8. HDU 4006The kth great number(K大数 +小顶堆)

    The kth great number Time Limit:1000MS     Memory Limit:65768KB     64bit IO Format:%I64d & %I64 ...

  9. HDU 1796How many integers can you find(容斥原理)

    How many integers can you find Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d ...

随机推荐

  1. css中clip-path属性的运用

    今天看到一位同学的需求,要在一个div中加一个小尖尖,对话时发的图片,旁边这个三角是怎么实现与图片的颜色一致,效果如下: 当然,解决这个问题有各种奇淫巧技,现在我们来看一个css属性clip-path ...

  2. SQL Server 查询表备注信息的语句

    --name   字段名称--user_type_id --max_length 最大长度--is_nullable 是否允许空--remark  描述SELECT c.name, c.user_ty ...

  3. Windows XP SP3 VC6环境下成功编译openssl-0.9.8zh

    1.下载openssl-0.9.8zh解压到f:\openssl-0.9.8zh 下载nasm-2.12.03rc1解压到D:\develop\nasm-2.12.03rc1并把添加到系统环境变量PA ...

  4. (转)java缓存技术,记录

    http://blog.csdn.net/madun/article/details/8569860 最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇 ...

  5. 收缩SQL Server 数据库的几种方法

    方法一: Use 数据库名 Select NAME,size From sys.database_files ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH ...

  6. 关于Linkedlist 和 ArrayDeque的讨论

    转自:http://blog.csdn.net/f2006116/article/details/51375470 其中:我们要讨论的LinkedList和ArrayDeque都是实现Deque接口, ...

  7. updateEasyuiTab

    //tabContainer:easyui-tabs或者id,title名称 this.updateEasyuiTab = function (tabContainer, outTitle, outU ...

  8. win7 64的系统安装。net4.0总是提示安装未成功

    主要原因是Windows update的临时文件损坏,建议重命名该文件夹. 1. 开始——运行——cmd——键入net stop WuAuServ回车(停止windows update服务): 2. ...

  9. Vue组件之自定义表单组件

    今天又看了一遍vue的文档,记得之前学习的时候,官方文档中有提过,v-model指令是一个语法糖,做两件事,一个是给表单控件元素绑定value,第二个是当输入时更新绑定的值,不过后来在"表单 ...

  10. hdoj 2022 海选女主角

    Problem Description potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口.“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato ...