【题目描述】

上次czy在机房妥善安排了他的后宫之后,他发现可以将他的妹子分为c种,他经常会考虑这样一个问题:在[l,r]的妹子中间,能挑选出多少不同类型的妹子呢?

注意:由于czy非常丧尸,所以他要求在所挑选的妹子类型在[l,r]中出现次数为正偶数,你懂得。

问题简述:n个数,m次询问,每次问[l,r]区间有多少个数恰好出现正偶数次

【输入格式】

第一行3个整数,表示n,c,m

第二行n个数,每个数Ai在[1,c]之间,表示一个Ai类型的妹子

接下来m行,每行两个整数l,r,表示询问[l,r]这个区间的答案

【输出格式】

有m行,表示第i次询问的答案

【样例输入】

5 5 3

1 1 2 2 3

1 5

3 4

2 3

【样例输出】

2

1

0

【数据范围】

共有10组测试数据

1-4组n,m=500,2000,5000,10000,c=1000

5-7组n,m=20000,30000,40000,c=10000

8-10组n,m=50000,80000,100000,c=100000

数据保证随机生成

同小z的袜子

 1 #define LL long long
 2
 3 #include<iostream>
 4 #include<cstdio>
 5 #include<cstring>
 6 #include<cmath>
 7 #include<algorithm>
 8 using namespace std;
 9
10 const int MAXN=100000+10;
11
12 struct qnode
13 {
14     int l,r,id;
15 }qu[MAXN];
16
17 int n,c,m,block;
18 int a[MAXN],pos[MAXN];
19 LL num[MAXN],ans[MAXN],temp;
20
21 int read()
22 {
23     int x=0,f=1;char ch=getchar();
24     while(ch<'0'||ch>'9'){if(ch=='-')f=-f;ch=getchar();}
25     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
26     return x*f;
27 }
28
29 bool cmp(qnode a,qnode b)
30 {
31     if(pos[a.l]==pos[b.l])
32         return a.r<b.r;
33     return pos[a.l]<pos[b.l];
34 }
35
36 void update(int x,int d)
37 {
38     int t=num[a[x]];
39     num[a[x]]+=d;
40     if(t%2==1&&num[a[x]]%2==0&&num[a[x]]>0) temp++;
41     if(t%2==0&&num[a[x]]%2==1&&t>0) temp--;
42 }
43
44 int main()
45 {
46     n=read();c=read();m=read();
47     block=(int)sqrt(n);
48     for(int i=1;i<=n;i++)
49     {
50         a[i]=read();
51         pos[i]=(i-1)/block+1;
52     }
53     for(int i=1;i<=m;i++)
54     {
55         qu[i].l=read();qu[i].r=read();
56         qu[i].id=i;
57     }
58     sort(qu+1,qu+m+1,cmp);
59
60     int pl=1,pr=0,id;
61     for(int i=1;i<=m;i++)
62     {
63         id=qu[i].id;
64         if(qu[i].l==qu[i].r)
65         {
66             ans[id]=0;
67             continue;
68         }
69         if(pr<qu[i].r)
70             for(int j=pr+1;j<=qu[i].r;j++)
71                 update(j,1);
72         else
73             for(int j=pr;j>qu[i].r;j--)
74                 update(j,-1);
75         pr=qu[i].r;
76         if(pl<qu[i].l)
77             for(int j=pl;j<qu[i].l;j++)
78                 update(j,-1);
79         else
80             for(int j=pl-1;j>=qu[i].l;j--)
81                 update(j,1);
82         pl=qu[i].l;
83         ans[id]=temp;
84     }
85     for(int i=1;i<=m;i++)
86         cout<<ans[i]<<endl;
87     return 0;
88 }

转载于:https://www.cnblogs.com/InWILL/p/6036073.html

NOIP模拟赛 czy的后宫3相关推荐

  1. 【noip模拟赛4】Matrix67的派对 暴力dfs

    [noip模拟赛4]Matrix67的派对 描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们安排 ...

  2. NOIP模拟赛csy2021/10/30

    NOIP模拟赛csy2021/10/30 比赛时间规划 赛后反思与总结 这..总的来说感觉打的很不好,根本没有状态,有一部分原因是今天来晚了,太慌,更多的还是这次题感觉很难o(╥﹏╥)o 比赛时间规划 ...

  3. NOIP 模拟赛 长寿花 题解

    NOIP 模拟赛 长寿花 题解 要放 \(n\) 层物品,第 \(i\) 层有 \(a_i\) 个位置放物品,物品有 \(m\) 中颜色,有约束条件: 同一层两个相邻物品颜色不能相同. 相邻两层颜色集 ...

  4. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  5. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  6. jyzy noip模拟赛5.22-2

    不知道哪来的题 jyzy noip模拟赛5.22-2 样例输入 1 2 3 4 样例输出 0.200000000000000 数据 |a|,|b|,|c|,|d|<=1e9 很多大佬迅速想到二分 ...

  7. 【WZOI第二次NOIP模拟赛Day1T2】世界末日 解题报告

    [WZOI第二次NOIP模拟赛Day1T2]世界末日 Problem 2 世界末日 (doomsday.pas/c/cpp) 背景 话说CWQ大牛终于打开了那扇神秘大门,但迎接他的不是什么神秘的东西, ...

  8. 辣鸡(ljh) NOIP模拟赛 模拟 平面几何 数论 化学相关(雾)

    [题目描述] 辣鸡ljhNOI之后就退役了,然后就滚去学文化课了. 然而在上化学课的时候,数学和化学都不好的ljh却被一道简单题难住了,受到了大佬的嘲笑. 题目描述是这样的:在一个二维平面上有一层水分 ...

  9. NOIP模拟赛套路技巧经验总结

    前言 还有2天就NOIP了,之前做了这么多场模拟赛,是时候拿出来总结一下, 算是给自己一针强心剂. 列表 从最近的考试总结起(个人认为的重点,可能有重复,仅供参考): (转化很重要,一定要简化问题过后 ...

  10. 【NOIP 模拟赛】平均数 涂色游戏 序列题解

    吐槽(完跪):神tmNOIP模拟赛,看到大题头根本高级数据结构什么的想都没想,结果死的很惨,第三题竟然要可持久化线段树,这NOIP我服了. 平均数: 这道题40分相信大家都能拿到,剩下的60分讲真考验 ...

最新文章

  1. Linux Kernel TCP/IP Stack — Socket Layer
  2. 【转】 指针函数与函数指针的区别
  3. mysql 乐观锁_使用Mysql乐观锁解决并发问题
  4. 方法重载与重写,返回类型
  5. TreeSet集合为什么要实现Comparable?
  6. python-字典和json
  7. python-extend用法
  8. linux环境包执行报错,linux环境下部署kettle,执行kitchen.sh文件报错后提示安装 libwebkitgtk 所需rpm包...
  9. [渝粤教育] 西南科技大学 物流系统规划与设计 在线考试复习资料
  10. 《纽约客》特写Jeff Dean与Sanjay:谷歌唯二11级工程师,同一台电脑上写代码
  11. sklearn入门——逻辑回归
  12. android 脸部识别之3D,这两款安卓手机也支持3D结构光人脸识别
  13. 5月10日12点,看雪.深信服2021 KCTF春季赛正式开赛!
  14. 卡奴、车奴、房奴,你是哪种?
  15. Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警
  16. Random(二)什么是伪共享?@sun.misc.Contended注解
  17. 第七届无线大数据研讨会总结
  18. Verycd上.net一些教程,自己留着做备忘..
  19. DDoS会危害关键基础设施吗? “安全加”认为媒体搞错了方向 APT攻击才是杀手锏...
  20. 智利银行为数字货币交易所重开交易账户

热门文章

  1. 《微信公众平台开发最佳实践》—— 1.2 微信公众账号的注册
  2. 程序员转正述职报告_程序员个人述职报告范文4篇(整理版)
  3. Linux程序设计(常用Linux命令)
  4. LaTeX:使用bib插入文献
  5. java源文件在哪_java源文件由什么组成?
  6. 苏宁金科CTO肖军:如何让1000人+的团队持续打胜仗,从找人,到育人,到用人具体怎么做?...
  7. ionic android 证书,Ionic 5/Angular Android和iOS 指纹认证
  8. jieba分词词性对照表
  9. VBA学习笔记之单元格
  10. 南京毕业生租房补贴发票开具地点一览表