[BZOJ3809]Gty的二逼妹子序列

试题描述

Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题。
对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数。
为了方便,我们规定妹子们的美丽度全都在[1,n]中。
给定一个长度为n(1<=n<=100000)的正整数序列s(1<=si<=n),对于m(1<=m<=1000000)次询问“l,r,a,b”,每次输出sl...sr中,权值∈[a,b]的权值的种类数。

输入

第一行包括两个整数n,m(1<=n<=100000,1<=m<=1000000),表示数列s中的元素数和询问数。
第二行包括n个整数s1...sn(1<=si<=n)。
接下来m行,每行包括4个整数l,r,a,b(1<=l<=r<=n,1<=a<=b<=n),意义见题目描述。
保证涉及的所有数在C++的int内。
保证输入合法。

输出

对每个询问,单独输出一行,表示sl...sr中权值∈[a,b]的权值的种类数。

输入示例

10 10
4 4 5 1 4 1 5 1 2 1
5 9 1 2
3 4 7 9
4 4 2 5
2 3 4 7
5 10 4 4
3 9 1 1
1 4 5 9
8 9 3 3
2 2 1 6
8 9 1 4

输出示例

2
0
0
2
1
1
1
0
1
2

数据规模及约定

见“输入

题解

莫队 + 树状数组。

不知为何这题还得卡常数。。。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <algorithm>
#include <cmath>
using namespace std;const int BufferSize = 1 << 16;
char buffer[BufferSize], *Head, *Tail;
inline char Getchar() {if(Head == Tail) {int l = fread(buffer, 1, BufferSize, stdin);Tail = (Head = buffer) + l;}return *Head++;
}
int read() {int x = 0, f = 1; char c = Getchar();while(!isdigit(c)){ if(c == '-') f = -1; c = Getchar(); }while(isdigit(c)){ x = x * 10 + c - '0'; c = Getchar(); }return x * f;
}#define maxn 100010
#define maxq 1000010int n, q, A[maxn], blid[maxn];struct Que {int ql, qr, al, ar, id;Que() {}Que(int _1, int _2, int _3, int _4, int _5): ql(_1), qr(_2), al(_3), ar(_4), id(_5) {}bool operator < (const Que& t) const { return blid[ql] != blid[t.ql] ? blid[ql] < blid[t.ql] : qr < t.qr; }
} qs[maxq];int tot[maxn], Ans[maxq];
int C[maxn];
void update(int x, int v) {for(; x <= n; x += x & -x) C[x] += v;return ;
}
int query(int x) {int sum = 0;for(; x; x -= x & -x) sum += C[x];return sum;
}int main() {n = read(); q = read();int m = sqrt(n >> 1);for(int i = 1; i <= n; i++) {A[i] = read();blid[i] = (i - 1) / m + 1;}for(int i = 1; i <= q; i++) {int ql = read(), qr = read(), al = read(), ar = read();qs[i] = Que(ql, qr, al, ar, i);}sort(qs + 1, qs + q + 1);int l, r; l = r = tot[A[1]] = 1; update(A[1], 1);for(int i = 1; i <= q; i++) {while(r < qs[i].qr) {r++;if(++tot[A[r]] == 1) update(A[r], 1);}while(l > qs[i].ql) {l--;if(++tot[A[l]] == 1) update(A[l], 1);}while(r > qs[i].qr) {if(!--tot[A[r]]) update(A[r], -1);r--;}while(l < qs[i].ql) {if(!--tot[A[l]]) update(A[l], -1);l++;}Ans[qs[i].id] = query(qs[i].ar) - query(qs[i].al - 1);}for(int i = 1; i <= q; i++) printf("%d\n", Ans[i]);return 0;
}

转载于:https://www.cnblogs.com/xiao-ju-ruo-xjr/p/6801387.html

[BZOJ3809]Gty的二逼妹子序列相关推荐

  1. BZOJ3809: Gty的二逼妹子序列

    BZOJ3809: Gty的二逼妹子序列 又是一道权限题... 本蒟蒻没钱氪金... 附上洛谷题面: 洛谷P4867 Gty的二逼妹子序列 题目描述 Autumn和Bakser又在研究Gty的妹子序列 ...

  2. 【bzoj3089】gty的二逼妹子序列

    一眼又是个莫队-- 首先看这时间/空间复杂度,线段树/主席树就别想了-- 然后么--zcy就有点傻了-- 于是zcy看了下hzwer,感觉受教育了. 分块的调块大小真是玄学设计. 有没有一种方法在修改 ...

  3. P4867-Gty的二逼妹子序列【平衡结合,莫队,分块】

    正题 题目链接:https://www.luogu.com.cn/problem/P4867 题目大意 一个序列要求支持询问一个区间[l,r][l,r][l,r]内在[a,b][a,b][a,b]之间 ...

  4. 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树

    题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...

  5. #BZOJ3744 GTY的妹子序列

    Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他 ...

  6. bzoj3744 Gty的妹子序列

    3744: Gty的妹子序列 Time Limit: 20 Sec   Memory Limit: 128 MB Submit: 967   Solved: 293 [ Submit][ Status ...

  7. 【BZOJ-3196】二逼平衡树 线段树 + Splay (线段树套平衡树)

    3196: Tyvj 1730 二逼平衡树 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 2271  Solved: 935 [Submit][St ...

  8. Bzoj 3196 Tyvj 1730 二逼平衡树

    3196: Tyvj 1730 二逼平衡树 >原题链接< Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排 ...

  9. 洛谷 P3380 bzoj3196 Tyvj1730 【模板】二逼平衡树(树套树)

    [模板]二逼平衡树(树套树) 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 查询k在区间内的排名 查询区间内排名为k的值 修改某一位值上的数值 查询k在 ...

最新文章

  1. Powershell(3)
  2. AD7606数据采集板使用ASCII码传递BINARY数据
  3. sudo apt-get update后public key is not available公钥不存在问题解决
  4. 宝塔更换域名_阿里云如何建站、域名、搭建网站?
  5. 跟我一起学.NetCore之中间件(Middleware)简介和解析请求管道构建
  6. html5自动提交表单提交,HTML5 Form表单--提交信息
  7. OpenShift 4 - Istio-Tutorial (2) 部署三个微服务
  8. 社保必须交满15年才能享受吗?
  9. Java EE实战教程 servlet (一)
  10. 深圳名校最新出炉 学校学区房房价飙升-查查吧深圳学区房地图
  11. c语言汉字属于什么类型_带你学习C语言—数据类型
  12. imac 升级 ssd_如何在较旧的2007-2009 iMac中安装SSD
  13. TFT显示屏开发(一):接口定义和型号选择(0.96寸和1.8寸)
  14. java基本类型val_Java的基本数据类型
  15. 《Windows-Program:Win32/Contebrew.A!ml 病毒》
  16. NameNode HA的部署方法
  17. linux大页卸载失败,Linux下CUDA卸载不完全与重装失败
  18. 基于智慧路灯杆的老旧小区改造方案
  19. PET图像的SUV计算
  20. 最全阿里面试题:已拿offer,阿里P8岗位完整阿里技术面试题目,这些面试题你能答出多少

热门文章

  1. 手机订货系统优势是什么?订货软件优势有啥?
  2. 今日学习——卷积神经网络(CNN)
  3. 《Python 深度学习》刷书笔记 Chapter 4 关于电影评论模型的进一步探讨
  4. XFTP下面如何查看隐藏文件?
  5. 虚拟机的全自动安装脚本
  6. 在进行IBEACON定位时的可视化处理
  7. .NET Framework 4.6.2发布
  8. Debian/Ubuntu修改最大文件连接数ulimit -SHn的坑
  9. Android 城市选择增加热门城市
  10. java计算机毕业设计体育馆场内设施预约系统设计源代码+数据库+系统+lw文档