1100 - Again Array Queries

                                                                                                 ->
 
 Link   <-

又是这种区间查询最值问题,题目意思是要使得这个区间的两个数的差值最小值,上次那个题用的线段树和RMQ水过,不过这题如果要求出区间最值还没什么问题,不过却要求差值最小值,这用RMQ或线段树可怎么做,于是,,,,,,于是,,,,,上网找了找思路,原来还真不是什么线段树、RMQ,而是一个简单的暴力就可以了, 我的天,这要是用前面所提的算法做也就直接陷坑里了;

暴力思路就不用说了吧,直接全部枚举区间所有差值求出最小值,但有个小知识点在这里,所以写篇博客题一下,我们千万注意题目数据范围,虽然查询次数较多,但输入的数据在1000以内,也就是说,如果查询的区间大于1000,那么必有重复元素,这时最小值直接就是0了(注意题意差值应当为正值,所以0是所有差值最小的),这就是所谓的鸽巢原理,即抽屉原理;什么意思呢,假如一年有10个苹果,有9个箱子,要使得这些苹果都能装进箱子里那么有一个盒子必然至少有两个苹果;再比如,一年365天,有366个人,那么必然有两个人生日是同一天;懂了吧,题目数据范围在1000内,如果查询区间大于1000,那么必然有相同的元素,元素个数可以很多,但元素都在1000以内;

所以这题只要注意区间大小这里就没什么问题,不然,,,果断超时~~~来看简短代码:

const int N=100000+10;
int a[N],v[N];
int main()
{
int t,n,k,i,j;
scanf("%d",&t);
int t1=t;
while(t--)
{
scanf("%d%d",&n,&k);
for(i=0; i<n; i++)
scanf("%d",&a[i]);
printf("Case %d:\n",t1-t);
int x,y;
while(k--)
{
memset(v,0,sizeof(v));
scanf("%d%d",&x,&y);
if(abs(y-x)>1000)//查询区间大于1000则必有相同的元素-----抽屉原理,不用则超时;
{
printf("0\n");
continue;
}
j=0;
for(i=x; i<=y; i++)
v[j++]=a[i];
sort(v,v+j);
int xx=unique(v,v+j)-v;//排序后去重,此函数多次介绍,这里不在赘述;
if(xx!=j)//如果去重后元素个数减小了,说明此区间有相同的元素;
printf("0\n");
else
{
int minn=100000;
for(i=1; i<j; i++)//暴力枚举所有差值,注意已经上面已经排好序了, 所以相邻差值是最小的;
minn=min(minn,v[i]-v[i-1]);
printf("%d\n",minn);
}
}
}
return 0;
}

Light oj-1100 - Again Array Queries,又是这个题,上次那个题用的线段树,这题差点就陷坑里了,简单的抽屉原理加暴力就可以了,真是坑~~的更多相关文章

  1. light oj 1100 - Again Array Queries(暴力,鸽巢原理)

    http://lightoj.com/volume_showproblem.php?problem=1100 刚一看到这题,要询问这么多次,线段树吧,想多了哈哈,根本没法用线段树做. 然后看看数据范围 ...

  2. Light oj 1100 - Again Array Queries (鸽巢原理+暴力)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1100 给你n个数,数的范围是1~1000,给你q个询问,每个询问问你l到r之间 ...

  3. Lucky Array CodeForces - 121E (线段树,好题)

    题目链接 题目大意: 定义只含数字$4,7$的数字为幸运数, 给定序列, 区间加正数, 区间询问多少个幸运数 题解: 对于每一个数, 求出它和第一个比它大的幸运数之差, 则问题转化为区间加,查询$0$ ...

  4. 洛谷OJ U552 守墓人 线段树模板题

    题目描述 Description 在一个荒凉的墓地上 有一个令人尊敬的守墓人, 他看守的墓地从来 没有被盗过, 所以人们很放心的把自己的先人的墓 安顿在他那 守墓人能看好这片墓地是必然而不是偶然... ...

  5. Light OJ-1082 - Array Queries,线段树区间查询最大值,哈哈,水过~~

                                                                                                        ...

  6. lightoj Again Array Queries

    1100 - Again Array Queries   PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 32 ...

  7. AC日记——Array Queries codeforces 797e

    797E - Array Queries 思路: 分段处理: 当k小于根号n时记忆化搜索: 否则暴力: 来,上代码: #include <cmath> #include <cstdi ...

  8. [Codeforces 266E]More Queries to Array...(线段树+二项式定理)

    [Codeforces 266E]More Queries to Array...(线段树+二项式定理) 题面 维护一个长度为\(n\)的序列\(a\),\(m\)个操作 区间赋值为\(x\) 查询\ ...

  9. codeforces 719E E. Sasha and Array(线段树)

    题目链接: E. Sasha and Array time limit per test 5 seconds memory limit per test 256 megabytes input sta ...

随机推荐

  1. 拓扑排序/DFS HDOJ 4324 Triangle LOVE

    题目传送门 题意:判三角恋(三元环).如果A喜欢B,那么B一定不喜欢A,任意两人一定有关系连接 分析:正解应该是拓扑排序判环,如果有环,一定是三元环,证明. DFS:从任意一点开始搜索,搜索过的点标记 ...

  2. stack(数组模拟) POJ 2559 Largest Rectangle in a Histogram

    题目传送门 /* 题意:宽度为1,高度不等,求最大矩形面积 stack(数组模拟):对于每个a[i]有L[i],R[i]坐标位置 表示a[L[i]] < a[i] < a[R[i]] 的极 ...

  3. 题解报告:hdu1995汉诺塔V(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1995 Problem Description 用1,2,...,n表示n个盘子,称为1号盘,2号盘,. ...

  4. tac命令的实现 分类: linux 2014-06-02 00:08 344人阅读 评论(0) 收藏

    此程序实现简化的linux中的tac命令.即对文件按行倒序输出. 首先将文件指针置于文件尾,从后向前移动指针, 将两个换行符'\n'间的内容作为一行输出. #include<stdio.h> ...

  5. gcc 编译 c++ 程序(转载)

    单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: /* helloworld.cpp */ #include <iostream& ...

  6. 有关LD_LIBRARY_PATH与ld.so.conf

    我之前写过一篇关于LD_LIBRARY_PATH与gcc/g++ -L的关系的文章,于是我自己用CPACK制作了一个Debian安装包,然后我在/home/.bashrc里添加了export LD_L ...

  7. spark yarn cluster模式下任务提交和计算流程分析

    spark可以运行在standalone,yarn,mesos等多种模式下,当前我们用的最普遍的是yarn模式,在yarn模式下又分为client和cluster.本文接下来将分析yarn clust ...

  8. JS 事件添加onclick写法注意。

    自定义函数添加onclick事件写法注意. 错误写法:element.onclick = addclass(className); 正确写法:element.onclick = function(){ ...

  9. 使用Glide加载Android图片

    一.概述 Glide是一个在Android端非常好的图片缓冲工具,总体上来说,他有以下优点 使用简单 自适应程度高 支持常见的图片格式,如jpg,png等 支持多种数据源,网络,本地,资源,Asset ...

  10. Python学习 Day 5 高阶函数 map/reduce filter sorter 返回函数 匿名函数 装饰器 偏函数

    高阶函数Higher-orderfunction 变量可以指向函数 >>> abs #abs(-10)是函数调用,而abs是函数本身 <built-in function ab ...