题意:给一个数组,每次查询输出区间内数字x出现的次数。

每次查询数字x是与其它数字无关的,所以我们可以以每个数字为索引建立一个链表,里面存放它出现的下标,这里可以保证是递增的。每次查询数字x,就在x的链表里面二分即可,即二分找到大于R的第一个数r,大于等于L的第一个数l,ans=r-l。如果是没有出现过的数字可以直接输出0。这里为了方便使用了STL,并加入了最小的下界0和最大的上界(n+1)作为哨兵。

注意这个题时间卡的比较紧,每次遍历1到100000初始化可能会超时,所以取数组中最小和最大的数字区间来初始化。

 #include<iostream>
 #include<vector>
 #include<cstring>
 #include<cstdio>
 #include<algorithm>
 using namespace std;
 int n,q;
 vector<];
 ];
 int main()
 {
     while(scanf("%d%d",&n,&q)!=EOF)
     {
         ,minn=;
         ; i<=n; ++i)
         {
             scanf("%d",&arr[i]);
             maxn=max(maxn,arr[i]);
             minn=min(minn,arr[i]);
         }
         for(int i=minn; i<=maxn; ++i)
         {
             numb[i].clear();
             numb[i].push_back();
         }
         ; i<=n; ++i)
             numb[arr[i]].push_back(i);
         for(int i=minn; i<=maxn; ++i)
             numb[i].push_back(n+);
         while(q--)
         {
             int l,r,h;
             scanf("%d%d%d",&l,&r,&h);
             ) puts(");
             else
             {
                 int up=upper_bound(numb[h].begin(),numb[h].end(),r)-numb[h].begin();
                 int down=lower_bound(numb[h].begin(),numb[h].end(),l)-numb[h].begin();
                 printf("%d\n",up-down);
             }
         }
     }
     ;
 }

FZU 2072 - Count的更多相关文章

  1. 莫队算法/二分查找 FZU 2072 Count

    题目传送门 题意:问区间内x的出现的次数分析:莫队算法:用一个cnt记录x的次数就可以了.还有二分查找的方法 代码: #include <cstdio> #include <algo ...

  2. FZU 2105Digits Count(线段树 + 成段更新)

    Description Given N integers A={A[0],A[1],...,A[N-1]}. Here we have some operations: Operation 1: AN ...

  3. FZU 2105-Digits Count(线段树延时标记)

    题意: 每次操作区间每个数进行一种(&或|.或^ )给定的一个数,到sum时统计给定区间的和. 分析: 这个题让我觉得我的思维很不活跃,对懒惰标记理解,还远远不够,通过这道题我对懒惰标记加深了 ...

  4. 第二百七十八节,MySQL数据库-表内容操作

    MySQL数据库-表内容操作 1.表内容增加 insert into 表 (列名,列名...) values (值,值,值...); 添加表内容添加一条数据 insert into 表 (列名,列名. ...

  5. nodejs api 中文文档

    文档首页 英文版文档 本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可. Node.js v0.10.18 手册 & 文档 索引 | 在单一页面中浏览 | JSON格 ...

  6. ACM: FZU 2105 Digits Count - 位运算的线段树【黑科技福利】

     FZU 2105  Digits Count Time Limit:10000MS     Memory Limit:262144KB     64bit IO Format:%I64d & ...

  7. FZU 2105 Digits Count(线段树)

    Problem 2105 Digits Count Accept: 302 Submit: 1477 Time Limit: 10000 mSec Memory Limit : 262144 KB P ...

  8. FZU 2105 Digits Count(位数计算)

    Description 题目描述 Given N integers A={A[0],A[1],...,A[N-1]}. Here we have some operations: Operation ...

  9. fzu 2105 Digits Count ( 线段树 ) from 第三届福建省大学生程序设计竞赛

    http://acm.fzu.edu.cn/problem.php?pid=2105 Problem Description Given N integers A={A[0],A[1],...,A[N ...

随机推荐

  1. html5中的一些新语义标签

    <header> <nav> <ul> <li><a href="">栏目1</a></li> ...

  2. DispatcherServlet中使用的特殊的Bean

    DispatcherServlet默认使用WebApplicationContext作为上下文,因此我们来看一下该上下文中有哪些特殊的Bean: 1.Controller:处理器/页面控制器,做的是M ...

  3. @font-face字体文件用法

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. 2.2 利用项目模板创建ASP.NET MVC项目

    1.启动VS2012,点击“文件|新建|项目”. 2.在新建项目的窗口中,选择ASP.NET MVC 4应用程序. 3.在新ASP.NET MVC 4项目窗口中的“选择模板”列表中选择“基本”模板,在 ...

  5. robotframework笔记18

    测试执行 如何创建测试套件结构解析 执行测试数据,如何继续执行一个测试用例失败后, 以及如何优雅地停止整个测试执行. 执行流 执行测试套件和 总是在一个测试套件执行测试用例. 一个测试套件 创建从一个 ...

  6. Windows下Git的安装及配置

    Git的BASH Git的为Windows提供了用于命令行运行的一个仿真BASH的Git.习惯LINUX和UNIX环境的你,可以在该BASH环境中输入“git”命令来完成各种版本控制的操作. 简介 G ...

  7. WPF:xmal 静动态资源

    <StackPanel.Resources> <SolidColorBrush x:Key="myBrush" Color="Teal"/&g ...

  8. 关于byte[]字节传输的大端和小端小议

    当前的存储器,多以byte为访问的最小单元,当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题,于是端(endian)的问题应运而生了,对于不同的存储方法,就有大端(big-en ...

  9. hdu----(5055)Bob and math problem(贪心)

    Bob and math problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  10. 非常好的Java反射例子

    1.Java反射的概念 反射含义:可以获取正在运行的Java对象. 2.Java反射的功能 1)可以判断运行时对象所属的类 2)可以判断运行时对象所具有的成员变量和方法 3)通过反射甚至可以调用到pr ...