【C++竞赛 F】yyy的三角形
时间限制:2s 内存限制:32MB
问题描述
yyy对三角形非常感兴趣,他有n个木棍,他正在用这些木棍组成三角形。这时xxx拿了两根木棍过来,xxx希望yyy能给他一根木棍,使得xxx可以组成一个三角形。yyy想知道他有多少根木棍满足xxx的要求。
输入描述
第一行一个整数T(1≤T≤5)表示数据组数。
对于每组数据第一行两个整数n(1≤n≤〖10〗^5 ),q(1≤q≤〖10〗^5),分别表示yyy的木棍数量和xxx的询问次数。第二行n个用空格分开的整数L_i (1≤L_i≤〖10〗^9),分别表示yyy的n根木棍的长度。接下来q行,每行两个整数a,b(1≤a,b≤〖10〗^9),表示xxx每次询问两根木棍的长度。
输出描述
对于每组数据,输出q行,每行一个整数表示答案。
输入样例
1
7 2
2 8 5 1 10 5 9
3 9
6 5
输出样例
3
6
【题目链接】:
【题解】
三角形的三边要满足
a+b>c
a+c>b
b+c>a
则转换一下就是
max(a-b,b-1)<c<a+b
排序后用二分搞出两个端点就可以了;
【完整代码】
#include <bits/stdc++.h>
#define rep1(i,a,b) for (int i = a;i <= b;i++)
using namespace std;
#define pb push_back;
const int MAXN = 1e5+100;
int n,q;
int c[MAXN];
int main()
{
//freopen("D:\\rush.txt","r",stdin);
int T;
scanf("%d",&T);
while (T--)
{
scanf("%d%d",&n,&q);
rep1(i,1,n)
scanf("%d",&c[i]);
sort(c+1,c+1+n);
rep1(i,1,q)
{
int L,R,a,b;
scanf("%d%d",&a,&b);
L = max(b-a,a-b);
R = a+b;
int l = 0,r = n,ans1=0;
while (l <= r)
{
int m = (l+r)>>1;
if (L<c[m])
{
ans1 = m;
r = m-1;
}
else
l = m+1;
}
l = 0,r = n;
int ans2=0;
while (l <= r)
{
int m = (l+r)>>1;
if (c[m]<R)
{
ans2 = m;
l = m+1;
}
else
r = m-1;
}
printf("%d\n",ans2-ans1+1);
}
}
return 0;
}
【C++竞赛 F】yyy的三角形的更多相关文章
- 牛客网-2018年湘潭大学程序设计竞赛-F
题目链接:https://www.nowcoder.com/acm/contest/105/F 解题思路:这道题第一眼直接思路就是搜索,但想了半天没想到有什么好办法搜,然后就转成最短路写了, 因为多入 ...
- 江西财经大学第一届程序设计竞赛 F题 解方程
链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 西安电子科技大学第16届程序设计竞赛 F Operating System (unique() 去重函数)
链接:https://www.nowcoder.com/acm/contest/107/F来源:牛客网 Operating System 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ ...
- 江西财经大学第一届程序设计竞赛 F
链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 题目描述 对于方程 2018 * x ^ 4 + 21 * x + 5 * x ^ 3 + 5 ...
- 吉首大学2019年程序设计竞赛-F 天花乱坠
题目链接:https://ac.nowcoder.com/acm/contest/992/F 题意:给定正n边形,边长为100,以每条边的中点连线构成新的正n边形,无限循环下去,求所有边的长度和. 思 ...
- 2014年山东省第五届ACM大学生程序设计竞赛F题:Full Binary Tree
题目描述 In computer science, a binary tree is a tree data structure in which each node has at most two ...
- “浪潮杯”第九届山东省ACM大学生程序设计竞赛 F: Four-tuples容斥定理
题目 F : Four-tuples 输入 1 1 1 2 2 3 3 4 4 输出 1 题意 给l1, r1, l2, r2, l3, r3, l4, r4 , 八个数据, 要求输出在区间[l ...
- 湖南省第十二届大学生计算机程序设计竞赛 F 地铁 多源多汇最短路
1808: 地铁 Description Bobo 居住在大城市 ICPCCamp. ICPCCamp 有 n 个地铁站,用 1,2,…,n 编号. m 段双向的地铁线路连接 n 个地铁站,其中第 i ...
- 2018年湘潭大学程序设计竞赛 F - maze
把点抽出来 跑个最短路就好啦. #include<bits/stdc++.h> #define LL long long #define pii pair<int,int> # ...
随机推荐
- ubuntu-12.04工作区内容变换所属工作区
最近一直纠结于ubuntu12.04窗口更改所属工作区问题,今天在网上看到了方法.记录下来 主要就是利用快捷键. 1.打开你想移动的窗口 2.使用快捷键Shift + Ctrl + Alt + Dow ...
- 1.lombok系列1:初识lombok
转自:https://www.imooc.com/article/18156 初识lombok 官网:https://projectlombok.org/ 什么是lombok 连官网都懒得废话,只给出 ...
- Win8.1系统所有的路径都无法更改文件夹名称
平台:win8.1 问题:所有的路径,无论是桌面还是分区还是文件夹内,可以新建和删除文件夹,但不能给文件夹改名,提示“文件或文件夹不存在 ” 分析:安装了几次photoshop后莫名其妙出现这个问题, ...
- bzoj3786星系探索(splay维护dfs序)
Description 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球均有且仅有一个依赖星球.主星球 ...
- Direct2D开发:向 MFC 项目添加 Direct2D 对象
0X01 创建 MFC 应用程序: 在“文件”菜单上指向“新建”,然后单击“项目”. 在“新建项目”对话框左窗格的“已安装的模板”下,展开“Visual C++”,然后选择“MFC”. 在中间窗格中, ...
- [python]两种编程思维--面向过程和面向对象
例如:eg:炒一份西红柿鸡蛋 一.面向过程 面向过程的编程思维,如下 二.面向对象 制作一台炒菜机器人,然后告诉机器人做一道西红柿炒鸡蛋.在这里,我们直接面对的是机器人,而非炒菜的过程,所以这里机器人 ...
- win8.1 “服务器运行失败”的解决方法
平台:win8.1 SP1 问题:安装QQ安全管家又卸载后出现了奇怪的问题,1.在桌面点右键→个性化时,提示“服务器运行失败”.2.右键点击“这台电脑”,选择“属性”时没有反应.3.开始屏幕里随便选择 ...
- JS学习笔记 - 面向对象
类.对象类:模子对象:产品(成品) 蛋糕(对象) 模子(类) Array 类 arr 对象 Array.push(); 错 arr.push(); 对 new arr(); 错 原型prototype ...
- sql for xml query sample
sample 1: declare @x xml select @x='<ArrayOfScheduledTime> <ScheduledTime> <Recurrenc ...
- swift 利用 Reflect(字典转模型)
1. 导入Reflect(字典转模型)框架 2. 让它继承Reflect这个类,如下代码所示: class IWUser: Reflect { /** * 用户的ID */ var idstr:N ...