Killer Problem (UVA 11898 )
Problem You are given an array of N integers and Q queries. Each query is a closed interval [l, r]. You should find the minimum absolute difference between all pairs in that interval.
Input First line contains an integer T (T ≤ 10). T sets follow. Each set begins with an integer N (N ≤ 200000). In the next line there are N integers ai (1 ≤ ai ≤ 104 ), the number in the i-th cell of the array. Next line will contain Q (Q ≤ 104 ). Q lines follow, each containing two integers li , ri (1 ≤ li , ri ≤ N, li < ri) describing the beginning and ending of of i-th range. Total number of queries will be less than 15000.
Output For the i-th query of each test output the minimum |ajak| for li ≤ j, k ≤ ri (j ̸= k) a single line.
Sample Input 1 10 1 2 4 7 11 10 8 5 1 10000 4 1 10 1 2 3 5 8 10
Sample Output 0 1 3 4
题解:因为给的N个数的范围很小,如果查询的区间的长度大于10000,那么区间一定有重复的数字,所以结果返回0,如果不是,把这个区间的所有出现的数记录在数组中,跑一遍[L,R]区间,求得相邻的出现的差值最小就是最后的答案。(根本不是线段树QTQ)
#include <bits/stdc++.h>
using namespace std;
const int maxn = 200005;
const int Max = 10004;
const int inf = 0x3f3f3f3f;
int a[maxn];
int b[Max];
int main()
{
int t,n,m,i,l,r,ans,last;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i = 1; i <= n; i ++)scanf("%d",&a[i]);
scanf("%d",&m);
while(m--)
{
scanf("%d%d",&l,&r);
if(r - l + 1 >= 10000)
{
printf("0\n");
continue;
}
else
{
memset(b,0,sizeof(b));
for(i = l; i <= r; i ++)
{
b[a[i]]++;
if(b[a[i]] > 1)
{
printf("0\n");
break;
}
}
if(i <= r)continue;
ans = inf;
last = -inf;
for(i = 1; i <= 10000; i ++)
{
if(b[i]==1)
{
ans = min(ans,i - last);
last = i;
}
}
printf("%d\n",ans);
}
}
}
return 0;
}
Killer Problem (UVA 11898 )的更多相关文章
- 木块问题(The Blocks Problem,Uva 101)
不定长数组:vector vector就是一个不定长数组.不仅如此,它把一些常用操作“封装”在了vector类型内部. 例如,若a是一个vector,可以用a.size( )读取它的大小,a.resi ...
- HDU 3549 Flow Problem(最大流)
HDU 3549 Flow Problem(最大流) Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...
- P1832 A+B Problem(再升级)
P1832 A+B Problem(再升级) 题目提供者 usqwedf 传送门 标签 动态规划 数论(数学相关) 洛谷原创 难度 普及/提高- 通过/提交 107/202 题目背景 ·题目名称是吸引 ...
- 题解 P1601 【A+B Problem(高精)】
P1601 A+B Problem(高精) 题目描述 高精度加法,x相当于a+b problem,b不用考虑负数. 输入输出格式 输入格式: 分两行输入a,b<=10^500 输出格式: 输出只 ...
- A+B Problem(再升级)
洛谷P1832 A+B Problem(再升级) ·给定一个正整数n,求将其分解成若干个素数之和的方案总数. 先说我的垃圾思路,根本没有验证它的正确性就xjb写的,过了垃圾样例,还水了20分,笑哭.. ...
- 【洛谷p1601】A+B Problem(高精)
高精度加法的思路还是很简单容易理解的 A+B Problem(高精)[传送门] 洛谷算法标签: 附上代码(最近懒得一批) #include<iostream> #include<cs ...
- uva10401Injured Queen Problem(递推)
题目:uva10401Injured Queen Problem(递推) 题目大意:依然是在棋盘上放皇后的问题,这些皇后是受伤的皇后,攻击范围缩小了.攻击范围在图中用阴影表示(题目).然后给出棋盘的现 ...
- 洛谷1601 A+B Problem(高精) 解题报告
洛谷1601 A+B Problem(高精) 本题地址:http://www.luogu.org/problem/show?pid=1601 题目背景 无 题目描述 高精度加法,x相当于a+b pro ...
- 洛谷——P1832 A+B Problem(再升级)
P1832 A+B Problem(再升级) 题目背景 ·题目名称是吸引你点进来的 ·实际上该题还是很水的 题目描述 ·1+1=? 显然是2 ·a+b=? 1001回看不谢 ·哥德巴赫猜想 似乎已呈泛 ...
随机推荐
- ubutnu18.04LTS 配置网卡新特性
在Ubuntu16的时候配置网卡信息都是在 /etc/network/interfaces 下的,但是到了18,配置文件位置改为了/etc/netplan/*.yaml,配置配置内容如下: netwo ...
- windows上pip安装及使用详解
windows上pip安装及使用详解 2018-11-21 19:49:58 十二笔 阅读数 8229更多 分类专栏: Python学习 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA ...
- 无障碍开发(六)之ARIA在HTML中的使用规则
ARIA使用规则一 如果你使用的元素( HTML5 )具有语义化,应该使用这些元素,而不应该重新定义一个添加ARIA的角色.状态或属性的元素. 浏览器的语义化标签已经默认隐含ARIA语义,像nav,a ...
- ReadWriteLock读写之间互斥吗
开发中遇到并发的问题一般会用到锁,Synchronized存在明显的一个性能问题就是读与读之间互斥:ReadWriteLock是JDK5中提供的读写分离锁.读写分离锁可以有效地帮助减少锁竞争,以提升系 ...
- js之语句——案例
以下为js语句的案例题,虽然简单,但是里面涉及到语句的嵌套,多个参数,需要好好分析. 1.求出1-100之间所有奇/偶数之和 <script> var sum = 0; for (var ...
- Base64加密后有换行回车的解决办法
据RFC 822规定,每76个字符,还需要加上一个回车换行 有时就因为这些换行弄得出了问题,解决办法如下,替换所有换行和回车 String bTemp = Base64.encodeBase64Str ...
- 第五篇.python进阶
目录 第五篇.python进阶 1. 异常处理 2. 数字类型内置方法 2.定义: 3.常用操作+内置方法: 4.存一个值or多个值: 5.有序or无序: 6.可变和不可变 1.用途: 2.定义: 3 ...
- pv与pvc
目的: 为了屏蔽底层存储实现的细节, 让用户方便使用同时让管理员方便管理, 引入了pv与pvc两种资源对象实现对存储的管理子系统 pv: 对底层网络共享存储的抽象, 将共享存储定义为一种资源 pvc: ...
- ssh connection refused 问题
以下内容引用自:ephererid的文章: https://segmentfault.com/a/1190000014532520 问题 在使用ssh连接时出现: $ ssh localhost ss ...
- 3.LVS的三种工作模式_TUN模式
1.TUN模式(Virtual Server via IP Tunneling) 采用NAT模式时,由于请求和响应的报文必须通过调度器地址重写,当客户请求越来越多时,调度器处理能力将成为瓶颈.为了解决 ...