考虑三个树枝: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. Tomcat中间件URL中文字符传递问题

    1. 问题描述: tomcat中如果URL中需要传递中文参数,需要配置tomcat的service.xml中文传递的编码方式,否则中文传递将出现乱码,导致程序异常. 2. 解决方式: 修改tomcat ...

  2. 03 Apache Solr: 安装和运行

         前面介绍了Solr在项目中的使用和构建高度可用.高度可扩展的Solr服务器的一些想法.但是光说不练假把式,现在开始,把Solr运行起来继续深入了解吧! 安装 安装JAVA Apache So ...

  3. 一个div,包含两个div,调整文字位置和div平均分布

    网页中经常会用到,一个div下平均分布两个小的div,两个小的div,显示的内容为图片还比较好处理,显示文字则不好控制效果,今天写了一个如图效果的 html: <div class=" ...

  4. 修改 TeamViewer ID方法

    修改 TeamViewer ID 的方法: 1. 开始 > 运行,录入%appdata%,删除TeamViewer的文件夹:2. 开始 > 运行,录入regedit:    删除 HKEY ...

  5. zabbix3.0 安装Tips

    原文转自:http://www.cnblogs.com/tae44/p/4812190.html#3270843 此处只能留空,否则,提示安装无法进行!!

  6. git & scp

    git & scp command : git & scp git git 提交 git checkout/pull =====[在提交前校验远程是否有冲突] git add [< ...

  7. 未添加document.ready产生的BUG

    今天在框架里使用superslide插件时,在javascript部分 <script type="text/javascript"> jQuery(".yj ...

  8. POJ 3041 Asteroids 二分图匹配

    以行列为点建图,每个点(x,y) 对应一条边连接x,y.二分图的最小点覆盖=最大匹配 //#pragma comment(linker, "/STACK:1024000000,1024000 ...

  9. Linux内核【链表】整理笔记(1)

    我们都知道Linux内核里的双向链表和学校里教给我们的那种数据结构还是些不一样.Linux采用了一种更通用的设计,将链表以及其相关操作函数从数据本身进行剥离,这样我们在使用链表的时候就不用自己去实现诸 ...

  10. cod-hw

    COD hw 4 Xinglu Wang 3140102282 2016-12-27 21:28:01 COD hw 45.35.3.15.3.35.3.45.3.55.3.65.45.4.15.4. ...