luoguP4396 [AHOI2013]作业
https://www.luogu.org/problemnew/show/P4396
简单的莫队+树状数组,但博主被卡常了,不保证代码在任何时候都能AC
#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void read(T &f) {
f = 0; T fu = 1; char c = getchar();
while (c < '0' || c > '9') {if (c == '-') fu = -1; c = getchar();}
while (c >= '0' && c <= '9') {f = (f << 3) + (f << 1) + (c & 15); c = getchar();}
f *= fu;
}
const int N = 3e5 + 5;
int cnt[N], f[2][N], a[N], B[N], pre[N], Ans[N][2];
int n, m, block, len;
struct ele {
int l, r, _l, _r, id;
bool operator < (const ele A) const {
return B[l] < B[A.l] || (B[l] == B[A.l] && r < A.r);
}
}Q[N];
int lowbit(int x) {return x & -x;}
void add(int *f, int x, int y) {for(int i = x; i <= n; i += lowbit(i)) f[i] += y;}
int query(int *f, int x) {int ans = 0; for(int i = x; i; i -= lowbit(i)) ans += f[i]; return ans;}
void change(int x, int y) {
if(y == 1) {
add(f[0], x, 1);
if(cnt[x] == 0) add(f[1], x, 1);
cnt[x]++;
} else {
add(f[0], x, -1);
cnt[x]--;
if(cnt[x] == 0) add(f[1], x, -1);
}
}
int main() {
cin >> n >> m; block = n / (sqrt(m * 2 / 3) + 1) + 1;
for(int i = 1; i <= n; i++) B[i] = (i - 1) / block + 1;
for(int i = 1; i <= n; i++) read(a[i]), pre[++len] = a[i];
for(int i = 1; i <= m; i++) {
int l, r, L, R;
read(l); read(r);
read(L); read(R);
Q[i] = (ele) {l, r, L, R, i};
pre[++len] = L, pre[++len] = R;
}
sort(pre + 1, pre + len + 1);
len = unique(pre + 1, pre + len + 1) - pre - 1;
for(int i = 1; i <= m; i++) {
Q[i]._l = lower_bound(pre + 1, pre + len + 1, Q[i]._l) - pre;
Q[i]._r = lower_bound(pre + 1, pre + len + 1, Q[i]._r) - pre;
}
for(int i = 1; i <= n; i++) a[i] = lower_bound(pre + 1, pre + len + 1, a[i]) - pre;
sort(Q + 1, Q + m + 1);
int l = 1, r = 0;
for(int i = 1; i <= m; i++) {
while(r < Q[i].r) change(a[++r], 1);
while(l > Q[i].l) change(a[--l], 1);
while(r > Q[i].r) change(a[r--], -1);
while(l < Q[i].l) change(a[l++], -1);
Ans[Q[i].id][0] = query(f[0], Q[i]._r) - query(f[0], Q[i]._l - 1);
Ans[Q[i].id][1] = query(f[1], Q[i]._r) - query(f[1], Q[i]._l - 1);
}
for(int i = 1; i <= m; i++) printf("%d %d\n", Ans[i][0], Ans[i][1]);
return 0;
}
luoguP4396 [AHOI2013]作业的更多相关文章
- BZOJ 3236: [Ahoi2013]作业
3236: [Ahoi2013]作业 Time Limit: 100 Sec Memory Limit: 512 MBSubmit: 1393 Solved: 562[Submit][Status ...
- 树套树专题——bzoj 3110: [Zjoi2013] K大数查询 & 3236 [Ahoi2013] 作业 题解
[原题1] 3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 978 Solved: 476 Descri ...
- Bzoj 3236: [Ahoi2013]作业 莫队,分块
3236: [Ahoi2013]作业 Time Limit: 100 Sec Memory Limit: 512 MBSubmit: 1113 Solved: 428[Submit][Status ...
- BZOJ 3236: [Ahoi2013]作业( 莫队 + BIT )
莫队..用两个树状数组计算.时间复杂度应该是O(N1.5logN). 估计我是写残了...跑得很慢... ----------------------------------------------- ...
- BZOJ_3809_Gty的二逼妹子序列 && BZOJ_3236_[Ahoi2013]作业 _莫队+分块
BZOJ_3809_Gty的二逼妹子序列 && BZOJ_3236_[Ahoi2013]作业 _莫队+分块 Description Autumn和Bakser又在研究Gty的妹子序列了 ...
- 【Luogu4396】[AHOI2013]作业(莫队)
[Luogu4396][AHOI2013]作业(莫队) 题面 洛谷 题解 模板题 #include<iostream> #include<cstdio> #include< ...
- [AHOI2013]作业
[AHOI2013]作业 题目大意: 给定一个长度为\(n(n\le10^5)\)的数列\(A(1\le A_i\le n)\).\(m(m\le10^6)\)次询问,每次询问区间\([l,r]\)内 ...
- 【BZOJ3809/3236】Gty的二逼妹子序列 [Ahoi2013]作业 莫队算法+分块
[BZOJ3809]Gty的二逼妹子序列 Description Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b ...
- BZOJ3236: [AHOI2013]作业
BZOJ3236: [AHOI2013]作业 题目描述 传送门 行,我知道是Please contact lydsy2012@163.com! 传送门2 题目分析 这题两问还是非常,emmmm. 首先 ...
随机推荐
- Python基础学习三 字典、元组
一.元组 元组,提示别人,这个值是不能被改变的,元组的定义方式是用(),小括号: 元组只有两个方法,那就是count和index mysql1 = ('127.0.0.1',3306,'my','ro ...
- Linux ALSA声卡驱动之一:ALS…
声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢! 一. 概述 ALSA是Advanced Linux Sound Architecture ...
- Java多线程-新特征-阻塞栈LinkedBlockingDeque
对于阻塞栈,与阻塞队列相似.不同点在于栈是“后入先出”的结构,每次操作的是栈顶,而队列是“先进先出”的结构,每次操作的是队列头. 这里要特别说明一点的是,阻塞栈是Java6的新特征.. Java为阻塞 ...
- PHP自动加载配置ArrayAccess类
ArrayAccess是PHP的类,可以把对象当成数组来使用访问. Config.php 配置类 <?php namespace IMooc; class Config implements ...
- Professional C# 6 and .NET Core 1.0 - Chapter 38 Entity Framework Core
本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - Chapter 38 Entity F ...
- Tensorflow Mask-RCNN训练识别箱子的模型运行结果(练习)
Tensorflow Mask-RCNN训练识别箱子的模型
- sqLSERVER 计划缓存
在这一期的性能调优培训里,我想详细谈下SQL Server里计划缓存及其副作用.在上一周你已经学到,每个提交给SQL Server的逻辑查询会编译成物理执行计划.那个执行计划然后会被缓存,即被称为计划 ...
- Vue 与Angular、React框架的对比
首先,我们先了解什么是MVX框架模式? MVX框架模式:MVC+MVP+MVVM 1.MVC:Model(模型)+View(视图)+controller(控制器),主要是基于分层的目的,让彼此的职责分 ...
- 数字图像处理实验(8):PROJECT 04-04,Highpass Filtering Using a Lowpass Image 标签: 图像处理MATLAB 2017-05-25 0
实验要求: 高通滤波器可以通过1减去低通滤波器的传递函数得到. 使用公式 计算可以的得到 . 实验代码: % PROJECT 04-04 Highpass Filtering Using a Lowp ...
- 用TCGA数据库分析癌症和癌旁组织的表达差异
上周收到一条求助信息:“如何用TCGA数据库分析LINC00152在卵巢癌与正常组织的的表达差异?” 所以以这个题目为记录分析过程如下: 一.下载数据 a)进入网站https://cancergeno ...