[BZOJ3809]Gty的二逼妹子序列
[BZOJ3809]Gty的二逼妹子序列
试题描述
输入
输出
输入示例
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的二逼妹子序列相关推荐
- BZOJ3809: Gty的二逼妹子序列
BZOJ3809: Gty的二逼妹子序列 又是一道权限题... 本蒟蒻没钱氪金... 附上洛谷题面: 洛谷P4867 Gty的二逼妹子序列 题目描述 Autumn和Bakser又在研究Gty的妹子序列 ...
- 【bzoj3089】gty的二逼妹子序列
一眼又是个莫队-- 首先看这时间/空间复杂度,线段树/主席树就别想了-- 然后么--zcy就有点傻了-- 于是zcy看了下hzwer,感觉受教育了. 分块的调块大小真是玄学设计. 有没有一种方法在修改 ...
- P4867-Gty的二逼妹子序列【平衡结合,莫队,分块】
正题 题目链接:https://www.luogu.com.cn/problem/P4867 题目大意 一个序列要求支持询问一个区间[l,r][l,r][l,r]内在[a,b][a,b][a,b]之间 ...
- 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...
- #BZOJ3744 GTY的妹子序列
Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他 ...
- bzoj3744 Gty的妹子序列
3744: Gty的妹子序列 Time Limit: 20 Sec Memory Limit: 128 MB Submit: 967 Solved: 293 [ Submit][ Status ...
- 【BZOJ-3196】二逼平衡树 线段树 + Splay (线段树套平衡树)
3196: Tyvj 1730 二逼平衡树 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2271 Solved: 935 [Submit][St ...
- Bzoj 3196 Tyvj 1730 二逼平衡树
3196: Tyvj 1730 二逼平衡树 >原题链接< Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排 ...
- 洛谷 P3380 bzoj3196 Tyvj1730 【模板】二逼平衡树(树套树)
[模板]二逼平衡树(树套树) 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 查询k在区间内的排名 查询区间内排名为k的值 修改某一位值上的数值 查询k在 ...
最新文章
- Powershell(3)
- AD7606数据采集板使用ASCII码传递BINARY数据
- sudo apt-get update后public key is not available公钥不存在问题解决
- 宝塔更换域名_阿里云如何建站、域名、搭建网站?
- 跟我一起学.NetCore之中间件(Middleware)简介和解析请求管道构建
- html5自动提交表单提交,HTML5 Form表单--提交信息
- OpenShift 4 - Istio-Tutorial (2) 部署三个微服务
- 社保必须交满15年才能享受吗?
- Java EE实战教程 servlet (一)
- 深圳名校最新出炉 学校学区房房价飙升-查查吧深圳学区房地图
- c语言汉字属于什么类型_带你学习C语言—数据类型
- imac 升级 ssd_如何在较旧的2007-2009 iMac中安装SSD
- TFT显示屏开发(一):接口定义和型号选择(0.96寸和1.8寸)
- java基本类型val_Java的基本数据类型
- 《Windows-Program:Win32/Contebrew.A!ml 病毒》
- NameNode HA的部署方法
- linux大页卸载失败,Linux下CUDA卸载不完全与重装失败
- 基于智慧路灯杆的老旧小区改造方案
- PET图像的SUV计算
- 最全阿里面试题:已拿offer,阿里P8岗位完整阿里技术面试题目,这些面试题你能答出多少