[luogu1972][bzoj1878][SDOI2009]HH的项链【莫队+玄学卡常】
题目大意
静态区间查询不同数的个数。
分析
好了,成功被这道题目拉低了AC率。。。
打了莫队T飞掉了,真的是飞掉了QwQ。
蒟蒻想不出主席树的做法,就换成了莫队。。。
很多人都不知道莫队是什么。。。
一句话概括莫队:离线询问分块排序,玄学降低复杂度
那么这道题目就是简单的莫队模板套一下就好了,每一次看看更新的点是不是会对答案造成贡献就可以过掉了。
但是复杂度很明显是\(Q(\sqrt{n}m)\),成功T掉,加上玄学卡常,破罐子破摔了100+终于过掉了。
#include <bits/stdc++.h>
#define ll long long
#define ms(a, b) memset(a, b, sizeof(a))
#define inf 0x3f3f3f3f
#define N 500005
#define M 1000005
using namespace std;
template <typename T>
inline void read(T &x) {
x = 0; T fl = 1; char ch = 0;
for (; ch < '0' || ch > '9'; ch = getchar())
if (ch == '-') fl = -1;
for (; ch >= '0' && ch <= '9'; ch = getchar())
x = (x << 1) + (x << 3) + (ch ^ 48);
x *= fl;
}
int buf[1 << 20];
template <typename T>
inline void write(T x) {
if (x < 0) putchar('-'), x = -x;
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
struct node {
int l, r, bl, id;
bool operator <(const node &rhs) const {
return (bl == rhs.bl)? ((bl & 1)? (r < rhs.r): (r > rhs.r)): (bl < rhs.bl);
}
}q[N];
int block, res = 0, n, m;
int clo[M], a[N], ans[N];
inline void update(register int x, register int opt) {
clo[a[x]] += opt;
if (opt == -1) if (clo[a[x]] == 0) res += opt;
if (opt == 1) if (clo[a[x]] == 1) res += opt;
}
int main() {
read(n); block = sqrt(n);
for (register int i = 1; i <= n; ++ i) read(a[i]);
read(m);
for (register int i = 1; i <= m; ++ i) {
read(q[i].l); read(q[i].r);
q[i].bl = (q[i].l + 1) / block;
q[i].id = i;
}
sort(q + 1, q + 1 + m);
register int l = 1, r = 0;
for (register int i = 1; i <= m; ++ i) {
while (r < q[i].r) update(++ r, 1);
while (r > q[i].r) update(r --, -1);
while (l > q[i].l) update(-- l, 1);
while (l < q[i].l) update(l ++, -1);
ans[q[i].id] = res;
}
for (register int i = 1; i <= m; ++ i) write(ans[i]), putchar('\n');
return 0;
}
[luogu1972][bzoj1878][SDOI2009]HH的项链【莫队+玄学卡常】的更多相关文章
- BZOJ1878 [SDOI2009] HH的项链 [莫队,卡常]
BZOJ传送门,洛谷传送门 HH的项链 Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一 段贝壳,思考它们所表达的含义. ...
- [BZOJ1878][SDOI2009]HH的项链 莫队
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1878 不带修改的莫队,用一个桶记录一下当前区间中每种颜色的数量就可以做到$O(1)$更新了 ...
- BZOJ1878[SDOI2009]HH的项链+莫队算法模板
题意:多次询问,求在一个区间中,有多少种珠子: 思路:莫队算法模板题目: 参考:https://www.cnblogs.com/RabbitHu/p/MoDuiTutorial.html #inclu ...
- [bzoj1878][SDOI2009][HH的项链] (莫队算法)
Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此, 他的项链变 ...
- Bzoj 1878: [SDOI2009]HH的项链 莫队
1878: [SDOI2009]HH的项链 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 2717 Solved: 1363[Submit][Statu ...
- [SDOI2009] HH的项链 | 莫队模板
题目链接:戳我 题意:求区间中不同颜色的种类数 因为是要过知识点,所以又把这题拿出来做了一遍......这里就写两种方法吧 主席树做法 设pre[i]为第i个点上的颜色在前面序列中出现的最晚的一次的位 ...
- P1972 [SDOI2009]HH的项链 莫队or树状数组
用什么树状数组莫队多帅 思路:树状数组\(or\)莫队(其实还是推荐树状数组\(QwQ\)) 提交:我告诉你我卡了一会儿常 卡不满原因:没有用奇偶性排序 题解: 莫队: 就是裸的莫队,把询问排序\(e ...
- BZOJ1878 SDOI2009 HH的项链 【莫队】
BZOJ1878 SDOI2009 HH的项链 Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的 ...
- bzoj千题计划181:bzoj1878: [SDOI2009]HH的项链
http://www.lydsy.com/JudgeOnline/problem.php?id=1878 之前用莫队做的,现在用树状数组 把每种数的第一个出现位置在树状数组中+1 nxt[i] 记录i ...
随机推荐
- 项目集成自动分词系统ansj,实现自定义词库
一,分词系统地址:https://github.com/NLPchina/ansj_seg 二,为什么选择ansj? 1.项目需求: 我们平台要做手机售后的舆情分析,即对购买手机的用户的评论进行分析. ...
- MySQL 主从同步遇到的问题及解决方案
在做某个项目的时候,使用主从数据库,master负责update.delete.insert操作,而slave负责select操作. 情景1:发表文章与查看文章 可以认为这个项目是一个博客系统,这里就 ...
- Java Core - static关键字的理解
一.基本常识 二.关于main方法 我们最常见的static方法就是main方法,至于为什么main方法必须是static的,现在就很清楚了.因为程序在执行main方法的时候没有创建任何对象,因此只有 ...
- redux模块化demo
store.js 在redux中 store 是唯一的. import {createStore} from 'redux'; import reducer from './reducer' // 引 ...
- windows php7 安装redis扩展
1,首先查看phpinfo 这会决定扩展文件版本(特别注意以php版本的architecture是x86还是64为准,不能以操作系统为准): 2.根据PHP版本号,编译器版本号和CPU架构 一定要根 ...
- MCV 和 MTV框架基本信息
一 . MCV # web服务器开发最著名的MVC模式 M : model.py 就是和数据库打交道的, 创建表等操作 V : view 视图(视图函数,就是装HTML文件的) C : control ...
- 数据驱动-参数化(Parameters)
在录制程序运行的过程中,Vugen(脚本生成器)自动生成了脚本以及录制过程中实际用到的数据.在这个时候,脚本和数据是混在一起的. 在登录操作中,很明显xpj与123123是填入的数据,如果Contro ...
- 用dbexpress连接sqlserver数据库
SQLConnection1.Params.clearSQLConnection1.Params.Values['ServerName'] := '192.168.0.112'; SQLConnect ...
- 我的Git
1.git 的安装与配置. 首先,对git进行下载.然后,在本地安装后进行版本查看,win10系统通过win+r快捷键打开控制台,然后用git --version的cmd命令查看git版本. 然后对g ...
- Vuex的API文档
前面的话 本文将详细介绍Vuex的API文档 概述 import Vuex from 'vuex' const store = new Vuex.Store({ ...options }) [构造器选 ...