博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj1878
阅读量:5079 次
发布时间:2019-06-12

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

http://www.lydsy.com/JudgeOnline/problem.php?id=1878

只会莫队做。。。

树状数组

#include
using namespace std;const int N = 1000010;struct query { int l, r, id;} q[N];int n, m, color;int c[N], tree[N], ans[N], pre[N][2];bool cp(query i, query j) { return i.r < j.r; }namespace bit{ int lowbit(int i) { return i & (-i); } void update(int pos, int delta) { for(int i = pos; i <= n; i += lowbit(i)) tree[i] += delta; } int ask(int pos) { int ret = 0; for(int i = pos; i; i -= lowbit(i)) ret += tree[i]; return ret; }} using namespace bit;int main(){ scanf("%d%d%d", &n, &color, &m); for(int i = 1; i <= n; ++i) scanf("%d", &c[i]); for(int i = 1; i <= m; ++i) scanf("%d%d", &q[i].l, &q[i].r), q[i].id = i; sort(q + 1, q + m + 1, cp); int pos = 0; for(int i = 1; i <= m; ++i) { if(pre[c[i]][0]) update(pre[c[i]][0], 1); if(pre[c[i]][1]) update(pre[c[i]][1], -1); pre[c[i]][1] = pre[c[i]][0]; pre[c[i]][0] = i; while(q[pos + 1].r == i) { ++pos; ans[q[pos].id] = ask(q[pos].r) - ask(q[pos].l - 1); } } for(int i = 1; i <= m; ++i) printf("%d\n", ans[i]); return 0;}
View Code

 

转载于:https://www.cnblogs.com/19992147orz/p/6739767.html

你可能感兴趣的文章
c# 泛型+反射
查看>>
第九章 前后查找
查看>>
Python学习资料
查看>>
jQuery 自定义函数
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
网卡流量检测.py
查看>>
poj1981 Circle and Points 单位圆覆盖问题
查看>>
POP的Stroke动画
查看>>
SQL语句在查询分析器中可以执行,代码中不能执行
查看>>
yii 1.x 添加 rules 验证url数组
查看>>
html+css 布局篇
查看>>
SQL优化
查看>>
用C语言操纵Mysql
查看>>
轻松学MVC4.0–6 MVC的执行流程
查看>>
redis集群如何清理前缀相同的key
查看>>
Python 集合(Set)、字典(Dictionary)
查看>>
获取元素
查看>>
proxy写监听方法,实现响应式
查看>>