题意:给一个数组,每次查询输出区间内数字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. tif图片编辑利器

    http://www.onlinedown.net/soft/99112.htmTIF编辑器 0.4 http://www.zjda07.cn/软件类别:国产软件/图像处理软件大小:1089KB软件授 ...

  2. 图像处理JPEGCodec类错误问题 毕业设计遇到的问题

     图像处理JPEGCodec类已经从Jdk1.7移除 2014-06-16 20:01:26 分类: 架构设计与优化 著名测试工具jira在使用图像处理JPEGCodec类会报告以下信息: 我是这样用 ...

  3. python 练习 13

    #!/usr/bin/python # -*- coding: UTF-8 -*- l = [] for i in range(3): x = int(raw_input('integer:\n')) ...

  4. android 获取字符串的方法

    字符串数组可以在value文件夹中声明: 书写的内容是: 两者的读取方式略有不同: 如果是读取数字的话,  使用: context.getResources().getStringArray( R.a ...

  5. 例子:使用C++中的this

    在C++中很多的东西都传值的,. C++中的对象之间的copy是传值的 , 他不想java那样,对象之间传递的引用 , 或者说是java对指针进行了封装 , 禁止了一些不安全的操作 对于C++而言 , ...

  6. hdu 1695 GCD(莫比乌斯反演)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  7. BZOJ1595 [Usaco2008 Jan]人工湖

    直接模拟...从最低的开始向两边拓展= = /************************************************************** Problem: 1595 ...

  8. placeholder在ie789下无效

    <input type="text" class="input" placeholder="用户名/手机号码/邮箱" value=&q ...

  9. 二分图 最大权匹配 km算法

    这个算法的本质还是不断的找增广路: KM算法的正确性基于以下定理:若由二分图中所有满足A[i]+B[j]=w[i,j]的边(i,j)构成的子图(称做相等子图)有完备匹配,那么这个完备匹配就是二分图的最 ...

  10. PHP Memcached应用实现代码

    一.memcached 简介 在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东.这里简单介绍一下,memcached 是高 ...