http://lightoj.com/volume_showproblem.php?problem=1100

刚一看到这题,要询问这么多次,线段树吧,想多了哈哈,根本没法用线段树做。

然后看看数据范围纯暴力的话肯定超时。然后比赛时就liao那了。

今天是补题,然后做这题,前两发傻逼呵呵的想了一种暴力方法,报着也许能过的心态交了,果然没让我失望超时了。

不说这些没用的了,下面说说这题是咋做的。

没用什么高深的算法,好像算法都没用,就纯暴力写的,关键是加入一种常识来优化。传说中的鸽巢原理,其实有点常识的就会,只不过脑子笨想不到我。

鸽巢原理看这篇博客http://blog.csdn.net/pi9nc/article/details/8506306;

题目给的数据是所给的n个数据的范围为[1,1000];

再看n 给的范围为1e+5;每次询问给你x1,x2,然后找[x1,x2]中两个数相差最小的距离。

那么如过x2-x1>1000,那么在[x1,x2]范围内肯定有重复的数,这个应该很好里解,因为其中每个数的范围都是[1,1000];

假如每个数都不一样那没其中必定有一个数要大于1000,与所给的范围矛盾,然后这种情况特判一下就行。这就用到鸽巢原理了,是不是很简单。

然后每次询问的复杂度就是1000了,那么总的复杂度为q*1000*2;

然后每次询问暴力就行了。

 1 #include<stdio.h>
2 #include<algorithm>
3 #include<stdlib.h>
4 #include<string.h>
5 using namespace std;
6 int b[1005];
7 int main(void)
8 {
9 int aa[100005];
10 int n,i,j,k,p,q,x1,x2;
11 scanf("%d",&n);
12 for(i=1; i<=n; i++)
13 {
14 scanf("%d %d",&p,&q);
15 for(j=0; j<p; j++)
16 {
17 scanf("%d",&aa[j]);
18 }
19 printf("Case %d:\n",i);
20 while(q--)
21 {
22 memset(b,0,sizeof(b));
23 scanf("%d %d",&x1,&x2);
24 if(x2-x1>1000)
25 {
26 printf("0\n");
27 }//特判
28 else
29 {
30 for(j=x1; j<=x2; j++)
31 {
32 b[aa[j]]++;
33 }//记录出现的数字的个数。
34 int cnt=-1;
35 int vv=2000;//记录最小差距,赋初值大于1000
36 for(j=1; j<=1000; j++)//从1开始循环到1000,所给的范围为【1,1000】;
37 {
38 if(b[j]>=2)
39 {
40 vv=0;
41 break;
42 }//如果出现重复出现多于一个的直接跳出
43 if(b[j]!=0&&cnt!=-1)
44 {
45 if(vv>j-cnt)
46 {
47 vv=j-cnt;
48 }
49 cnt=j;
50 }
51 if(cnt==-1&&b[j]!=0)
52 {
53 cnt=j;
54 }
55 }//这样循环是根据数列的递增的性质,出现的前后个数间保证了间距最小。
56 printf("%d\n",vv);
57 }
58 }
59
60 }
61 return 0;
62 }

light oj 1100 - Again Array Queries(暴力,鸽巢原理)的更多相关文章

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

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

  2. HDU 1005 Number Sequence【多解,暴力打表,鸽巢原理】

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  3. Find the duplicate Number (鸽巢原理) leetcode java

    问题描述: Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive ...

  4. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7644   Accepted: 2798 ...

  5. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理

    Find a multiple Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7192   Accepted: 3138   ...

  6. cf319.B. Modulo Sum(dp && 鸽巢原理 && 同余模)

    B. Modulo Sum time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  7. poj 2356 Find a multiple(鸽巢原理)

    Description The input contains N natural (i.e. positive integer) numbers ( N <= ). Each of that n ...

  8. poj2356 Find a multiple(抽屉原理|鸽巢原理)

    /* 引用过来的 题意: 给出N个数,问其中是否存在M个数使其满足M个数的和是N的倍数,如果有多组解, 随意输出一组即可.若不存在,输出 0. 题解: 首先必须声明的一点是本题是一定是有解的.原理根据 ...

  9. NYOJ 417 死神来了 鸽巢原理

    死神来了 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 有一天,王小子在遨游世界时,遇到了一场自然灾害.一个人孤独的在一个岛上,没有吃的没有喝的.在他饥寒交迫将要死亡时 ...

随机推荐

  1. mysql 中@ 和 @@的区别

    @x 是 用户自定义的变量 (User variables are written as @var_name)@@x 是 global或session变量 (@@global @@session )@ ...

  2. dubbo 协议的 K8s pod 存活探针配置

    背景 某项目采用微服务架构,dubbo 框架,K8s 方式部署. 其中 HTTP 协议由网关应用统一处理,大部分应用仅提供 dubbo 协议. 目标 应用某个实例(pod)状态异常时,尝试自动重启恢复 ...

  3. day06 视图层

    day06 视图层 今日内容 视图层 小白必会三板斧 JsonResponse form表单发送文件 FBV与CBV FBV基于函数的视图 CBV基于类的视图 模板层 模板语法的传值 模板语法之过滤器 ...

  4. Python计算期权隐含波动率

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. Black-Scholes 将期权价格描述为标的价格.行权价.无风险利率.到期时间和波动性的函数.  V ...

  5. 《Scala编程》课程作业

    第一题.百元喝酒 作业要求:每瓶啤酒2元,3个空酒瓶或者5个瓶盖可换1瓶啤酒.100元最多可喝多少瓶啤酒?(不允许借啤酒) 思路:利用递归算法,一次性买完,然后递归算出瓶盖和空瓶能换的啤酒数 /** ...

  6. 大数据学习day24-------spark07-----1. sortBy是Transformation算子,为什么会触发Action 2. SparkSQL 3. DataFrame的创建 4. DSL风格API语法 5 两种风格(SQL、DSL)计算workcount案例

    1. sortBy是Transformation算子,为什么会触发Action sortBy需要对数据进行全局排序,其需要用到RangePartitioner,而在创建RangePartitioner ...

  7. 【leetcode】208. Implement Trie (Prefix Tree 字典树)

    A trie (pronounced as "try") or prefix tree is a tree data structure used to efficiently s ...

  8. Linux磁盘分区(三)之查看磁盘分区常用命令

    Linux磁盘分区(三)之查看磁盘分区常用命令转自https://blog.csdn.net/x356982611/article/details/77893264 1.df     df -T 总的 ...

  9. my37_MGR流控对数据库性能的影响以及MGR与主从的性能对比

    mysql> show variables like 'group_replication_flow_control_applier_threshold'; +----------------- ...

  10. spring的注解AOP配置

    package com.hope.service.impl;import com.hope.service.IAccountService;import org.aspectj.lang.annota ...