博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【luogu P4113 [HEOI2012]采花】 假题解
阅读量:4626 次
发布时间:2019-06-09

本文共 1514 字,大约阅读时间需要 5 分钟。

题目链接:

为什么要卡莫队!为什么加强的这么毒瘤!
莫队可以拿100分剩下三个点没治了

// luogu-judger-enable-o2#include 
#include
#include
#include
#include
#define ri register#define il inlineusing namespace std;const int maxn = 1000001;inline int read(){ int k=0; char c; c=getchar(); while(!isdigit(c))c=getchar(); while(isdigit(c)){k=(k<<3)+(k<<1)+c-'0';c=getchar();} return k;}int n, m, c, answer, bl, curL = 1, curR = 0;int a[maxn], cnt[maxn], ans[maxn];struct Query{ int l, r, p; friend bool operator < (const Query &a, const Query &b) { return (a.l/bl) == (b.l/bl) ? a.r < b.r : a.l < b.l; }}q[maxn];il void add(int pos){ ++cnt[a[pos]]; if(cnt[a[pos]] == 2) answer++;}il void del(int pos){ --cnt[a[pos]]; if(cnt[a[pos]] == 1) answer--;}int main(){ n = read(); c = read(); m = read(); bl = sqrt(n); for(ri int i = 1; i <= n; i++) a[i] = read(); for(ri int i = 1; i <= m; i++) { int l,r; l = read(); r = read(); q[i].l = l; q[i].r = r; q[i].p = i; } sort(q+1,q+1+m); for(ri int i = 1; i <= m; i++) { int L = q[i].l, R = q[i].r; while(curL < L) del(curL++); while(curL > L) add(--curL); while(curR < R) add(++curR); while(curR > R) del(curR--); ans[q[i].p] = answer; } for(int i = 1; i <= m; i++) printf("%d\n",ans[i]); return 0;}

转载于:https://www.cnblogs.com/MisakaAzusa/p/9214130.html

你可能感兴趣的文章
mui搜索框 搜索点击事件
查看>>
Vijos P1243 生产产品 (单调队列优化DP)
查看>>
iOS常用第三方库 -转
查看>>
Android布局学习
查看>>
python的沙盒环境--virtualenv
查看>>
软件自动化测试——入门、进阶与实战
查看>>
BZOJ1878 [SDOI2009]HH的项链 树状数组 或 莫队
查看>>
BZOJ3675 [Apio2014]序列分割 动态规划 斜率优化
查看>>
2016.10.24 继续学习
查看>>
产品功能对标 - 服务授权管理
查看>>
各地IT薪资待遇讨论
查看>>
splay入门
查看>>
带CookieContainer进行post
查看>>
C语言学习笔记--字符串
查看>>
关于七牛进行图片添加文字水印操作小计
查看>>
DataSource数据库的使用
查看>>
Luogu4069 SDOI2016 游戏 树链剖分、李超线段树
查看>>
Java的内部类真的那么难以理解?
查看>>
一文搞懂Java环境,轻松实现Hello World!
查看>>
hash实现锚点平滑滚动定位
查看>>