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. POJ3320 Jessica's Reading Problem

    Bryce1010模板 #include <stdio.h> #include <string.h> #include <stdlib.h> #include &l ...

  2. 1.1.1最短路(Floyd、Dijstra、BellmanFord)

    转载自hr_whisper大佬的博客 [ 一.Dijkstra 比较详细的迪杰斯特拉算法讲解传送门 Dijkstra单源最短路算法,即计算从起点出发到每个点的最短路.所以Dijkstra常常作为其他算 ...

  3. Sequence POJ - 2442

    Sequence POJ - 2442 口胡一个结论:就是前i行产生的最小的n个和,一定可以在"前i-1行产生的最小n个和,每一个加上这一行的任意一个数,产生的n2个数"中找到.( ...

  4. VGG16 pre-trained model 实现 image classification

    站在巨人的肩膀上!使用VGG预先训练好的weight来,进行自己的分类. 下一阶段是在这上面进行自己的修改,完成自己想要的功能. Github源码 Github上有我全部的工程代码. 环境配置 Pyt ...

  5. angular.module 参数的意思

    定义一个module需要两个参数,第一个作为module的名字,第二个则是指出这个module都依赖哪些别的modules

  6. Zclip点击复制内容到剪贴板兼容各浏览器

    WEB开发中,要让用户复制页面中的一段代码.URL地址等信息,为了避免用户拖动鼠标再进行右键复制操作而可能出现的差错,我们可以直接在页面中放置一个复制按钮,只需要轻轻一点这个复制按钮,内容将会被复制, ...

  7. R in action读书笔记(6)-第七章:基本统计分析(中)

    7.2 频数表和列联表 > library(vcd) > head(Arthritis) ID Treatment Sex Age Improved 1 57 Treated Male 2 ...

  8. MySQL学习随笔--通过实例理解merge ,temptable算法的差异

    实例1 使用视图的两种算法merge和temptable分别统计 表tb_phone中market_price大于4000的手机,然后查询视图查找出小于6000的手机 简单总结最终获取的结果:查询出m ...

  9. t470安装win7

    终于把win7安装好了,写了个文档 https://files.cnblogs.com/files/cookies9/t470%E5%AE%89%E8%A3%85win7%E6%96%B9%E6%B3 ...

  10. 看到了一篇不错的tensorflow文章

    http://dataunion.org/28906.html 本文作者 Steven Dufresne,总结了新手学 TensorFlow 需要的核心知识点和实操内容,旨在鼓励更多人借 Tensor ...