uva 11898 - Killer Problem
来源:互联网 发布:js中怎么获取name属性 编辑:程序博客网 时间:2024/06/10 04:53
Killer 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 (T10). T sets follow. Each set begins with an integer N ( N200000). In the next line there are N integers ai ( 1ai104), the number in the i-th cell of the array. Next line will contain Q ( Q104). Q lines follow, each containing two integers li, ri ( 1li, riN, 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 | aj–ak| for lij, kri (jk) a single line.Sample Input
1101 2 4 7 11 10 8 5 1 1000041 101 23 58 10
Sample Output
0134
大力出奇迹啊!10^8的算法也过了。主要是a的范围很小,可以用计数排序,然后找相邻两个间的差值,注意如果有某个数计数超过两次,则答案为0,然后停止循环,加上这个优化就过了。。。(后来认识到,区间范围大于10^4时,一定有某个数出现2次,所以复杂度是10^8)
#include <cstdio>#include <algorithm>#include <vector>#include <map>#include <queue>#include <iostream>#include <stack>#include <set>#include <cstring>#include <stdlib.h>#include <cmath>using namespace std;typedef long long LL;typedef pair<int, int> P;const int maxn = 200000 + 5;const int maxk = 10000 + 5;const int INF = 1000000000;int a[maxn];int countn[maxk];int main(){ int t; scanf("%d", &t); while(t--){ int n; scanf("%d", &n); int Max = 0; for(int i = 1;i <= n;i++){ scanf("%d", &a[i]); Max = max(Max, a[i]); } int q; scanf("%d", &q); while(q--){ int l, r; scanf("%d%d", &l, &r); memset(countn, 0, sizeof(countn)); int ans = INF; for(int i = l;i <= r;i++){ countn[a[i]]++; if(countn[a[i]]>1){ ans = 0; break; } } if(ans != 0){ int last = -1; for(int i = 1;i <= Max;i++){ if(countn[i] == 0) continue; if(countn[i] > 1){ ans = 0; break; } if(last == -1){ last = i; continue; } ans = min(ans, i-last); last = i; } } printf("%d\n", ans); } } return 0;}
0 0
- uva 11898 - Killer Problem
- UVA - 11898 Killer Problem
- uva 11898 - Killer Problem(暴力)
- UVA 11898 - Killer Problem(鸽笼原理+计数排序+大力出奇迹)
- UVA11898 - Killer Problem(暴力)
- HDU 5328 Problem Killer
- HDU5328.Problem Killer
- hdu5328 Problem Killer
- 【HDOJ 5328】 Problem Killer
- HDU 5328 Problem Killer
- hdu 5328 Problem Killer
- hdu 5328 Problem Killer
- HDU 5238 Problem Killer
- hdu5328 Problem Killer(dp)
- HDU 5328 Problem Killer
- HDU 5328 Problem Killer
- Hdu-5328 Problem Killer
- HDU 5328 Problem Killer
- 用堆排序将整形无序数组排序
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- Virgo Tomcat Server 指南-Hello World
- HDOJ 3544 Alice's Game 博弈
- 禁用滚动视图ListView、ViewPager、ScrollView、HorizontalScrollView、WebView边界颜色渐变
- uva 11898 - Killer Problem
- 突破IIS的客户端连接限制
- 闲着无聊,写两个线段树发现类似点。
- std::cerr
- Rose图发布为网页版
- 学习Hadoop生态系统最值得一读的书籍
- sphinx的coreseek4.0中文分词的安装
- javacc学习总结
- mini小框架BeanUtils基本使用