题目描述

萧薰儿是古国的公主,平时的一大爱好是采花。

今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花。

花园足够大,容纳了n朵花,花有c种颜色(用整数1-c表示),且花是排成一排的,以便于公主采花。公主每次采花后会统计采到的花的颜色数,颜色数越多她会越高兴!同时,她有一癖好,她不允许最后自己采到的花中,某一颜色的花只有一朵。为此,公主每采一朵花,要么此前已采到此颜色的花,要么有相当正确的直觉告诉她,她必能再次采到此颜色的花。

由于时间关系,公主只能走过花园连续的一段进行采花,便让女仆福涵洁安排行程。福涵洁综合各种因素拟定了m个行程,然后一一向你询问公主能采到多少朵花(她知道你是编程高手,定能快速给出答案!),最后会选择令公主最高兴的行程(为了拿到更多奖金!)。

输入输出格式

输入格式:

第一行四个空格隔开的整数n、c以及m。接下来一行n个空格隔开的整数,每个数在[1, c]间,第i个数表示第i朵花的颜色。接下来m行每行两个空格隔开的整数l和r(l ≤ r),表示女仆安排的行程为公主经过第l到第r朵花进行采花。

输出格式:

共m行,每行一个整数,第i个数表示公主在女仆的第i个行程中能采到的花的颜色数。

输入输出样例

输入样例#1:

5 3 5
1 2 2 3 1
1 5
1 2
2 2
2 3
3 5
输出样例#1:

2
0
0
1
0

说明

对于100%的数据,1 ≤ n ≤ 2∗106

本题有两个subtask

subtask1保证 n,m,c≤3∗105,占100分

subtask2保证 n,m,c≤2∗106,占100分

Solution:

  前$100%$的数据直接套上莫队模板,维护一下出现次数,超过$2$的计数就$OK$了。

代码:

#include<bits/stdc++.h>
#define il inline
#define For(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
using namespace std;
const int N=2e6+;
int n,c,m,l=,r,tot[N],ans[N],a[N],pos[N],num;
struct node{
int l,r,id;
bool operator<(const node a)const{return pos[l]==pos[a.l]?r<a.r:l<a.l;}
}t[N];
il int gi(){
int a=;char x=getchar();bool f=;
while((x<''||x>'')&&x!='-')x=getchar();
if(x=='-')x=getchar(),f=;
while(x>=''&&x<='')a=a*+x-,x=getchar();
return f?-a:a;
}
il void change(int k,int c){
if(c==){if(tot[a[k]]==)num++;tot[a[k]]++;}
else {if(tot[a[k]]==)num--;tot[a[k]]--;}
}
int main(){
n=gi(),c=gi(),m=gi();
int s=int(sqrt(n));
For(i,,n)a[i]=gi(),pos[i]=(i-)/s+;
For(i,,m)t[i].l=gi(),t[i].r=gi(),t[i].id=i;
sort(t+,t+m+);
For(i,,m){
if(t[i].l==t[i].r){ans[t[i].id]=;continue;}
while(l<t[i].l)change(l++,-);
while(l>t[i].l)change(--l,);
while(r<t[i].r)change(++r,);
while(r>t[i].r)change(r--,-);
ans[t[i].id]=num;
}
For(i,,m)printf("%d\n",ans[i]);
return ;
}

最新文章

  1. Javascript中JSON对象的操作以及遍历key/value
  2. 谷歌地图地理解析和反解析geocode.geocoder详解
  3. 常用 redis 命令(for php)
  4. 简明python教程 --C++程序员的视角(二):函数及作用域
  5. linux库列表
  6. Java运算符优先级
  7. 游戏 tabpanel
  8. ajax两种不同方式的不同结果
  9. 在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍
  10. HDU 1504 Disk Tree
  11. 设计模式值六大原则——接口隔离原则 (ISP)
  12. WeMall微商城源码报名插件Apply的主要源码
  13. openssl ca(签署和自建CA)
  14. h5 新增的invalid事件,貌似有很大bug
  15. 解决 Win10 UWP 无法使用 ss 连接
  16. 网络通信 --&gt; 互联网协议(一)
  17. 解决:My97DatePicker 日期插件引用在PHP文件中maxDate和minDate控制失效问题
  18. layui table 内容为select隐藏问题
  19. web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识
  20. python自学第10天,生成器

热门文章

  1. java XML 通过BeanUtils的population为对象赋值 根据用户选择进行dom4j解析
  2. IOS开发中缓存策略
  3. v-show
  4. 连接MYSQL 错误代码2003
  5. python--Wrapper
  6. nginx+php整合(是让nginx可以运行php,以及下载地址)
  7. jQuery检测判断复选框是否被选中了的几种方法
  8. maston总结
  9. android studio 首字母提示 设置 大小写敏感
  10. 天性 &amp; 如水一般,遇强则强 —— 梦想、行为、性格