(待修莫队 没过! 抽空在检查)Dynamic len(set(a[L:R])) UVA - 12345
#include <iostream>
#include <cstdio>
#include <sstream>
#include <cstring>
#include <map>
#include <set>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#define MOD 2018
#define LL long long
#define ULL unsigned long long
#define Pair pair<int, int>
#define mem(a, b) memset(a, b, sizeof(a))
#define _ ios_base::sync_with_stdio(0),cin.tie(0)
//freopen("1.txt", "r", stdin);
using namespace std;
const int maxn = , INF = 0x7fffffff;
int n, m, pos[maxn], s[], c[maxn], ans, t[maxn];
int qsz, csz;
struct node
{
int l, r, t, id, res;
}Node[maxn]; void add(int l, int r, int t, int id)
{
Node[id].l = l;
Node[id].r = r;
Node[id].t = t;
Node[id].id = id;
}
int l = , r = , T = ;
struct change
{
int pos, Old, New;
}Cha[maxn]; void add_(int pos, int New, int Old, int cnt)
{
Cha[cnt].pos = pos;
Cha[cnt].New = New;
Cha[cnt].Old = Old;
} bool cmp(node a, node b)
{
if(pos[a.l] == pos[b.l])
{
if(pos[a.r] == pos[b.r])
return a.t < b.t;
return pos[a.r] < pos[b.r];
}
return pos[a.l] < pos[b.l];
} bool cmp_id(node a, node b)
{
return a.id < b.id;
} void ad(int val)
{
s[val]++;
if(s[val] == )
ans++;
} void de(int val)
{
s[val]--;
// cout<< ans <<endl;
if(s[val] == )
ans--;
} void go(int idx, int val)
{
if(l <= idx && idx <= r)
{
de(c[idx]);
ad(val);
}
c[idx] = val;
} int main()
{
qsz = csz = ;
ans = ;
scanf("%d%d", &n, &m);
for(int i=; i<=n; i++)
{
scanf("%d", &c[i]);
t[i] = c[i];
}
int block = pow(n, 2.0/);
for(int i=; i<=n; i++)
pos[i] = (i-)/block + ;
for(int i=; i<=m; i++)
{
char str[];
int x, y;
scanf("%s%d%d", str, &x, &y);
if(str[] == 'Q')
{
add(++x, y, csz, ++qsz);
}
else
{
add_(++x, y, t[x], ++csz);
t[x] = y;
}
}
sort(Node+, Node++qsz, cmp);
// for(int i=1; i<=qsz; i++)
// cout<< Node[i].l << " " << Node[i].r << endl;
for(int i=; i<=qsz; i++)
{
for(; T < Node[i].t; T++)
go(Cha[T+].pos, Cha[T+].New);
for(; T > Node[i].t; T--)
go(Cha[T].pos, Cha[T].Old); for(; r < Node[i].r; r++)
ad(c[r+]);
for(; r > Node[i].r; r--)
de(c[r]);
for(; l < Node[i].r; l++)
de(c[l]);
for(; l > Node[i].l; l--)
ad(c[l-]);
// for(; T < Node[i].t; T++)
// go(Cha[T+1].pos, Cha[T+1].New);
// for(; T > Node[i].t; T--)
// go(Cha[T].pos, Cha[T].Old); Node[i].res = ans;
}
sort(Node+, Node+qsz+, cmp_id);
for(int i=; i<=qsz; i++)
printf("%d\n",Node[i].res); return ;
}
(待修莫队 没过! 抽空在检查)Dynamic len(set(a[L:R])) UVA - 12345的更多相关文章
- P1903 [国家集训队]数颜色 / 维护队列(带修莫队)
题目描述: 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. ...
- BZOJ 4129 Haruna’s Breakfast ( 树上带修莫队 )
题面 求树上某路径上最小的没出现过的权值,有单点修改 添加链接描述 分析 树上带修莫队板题,问题是怎么求最小的没出现过的权值. 因为只有nnn个点,所以没出现过的最小值一定在[0,n][0,n][0, ...
- BZOJ 3052/Luogu P4074 [wc2013]糖果公园 (树上带修莫队)
题面 中文题面,难得解释了 BZOJ传送门 Luogu传送门 分析 树上带修莫队板子题... 开始没给分块大小赋初值T了好一会... CODE #include <bits/stdc++.h&g ...
- LUOGU P4074 [WC2013]糖果公园 (树上带修莫队)
传送门 解题思路 树上带修莫队,搞了两天..终于开O2+卡常大法贴边过了...bzoj上跑了183s..其实就是把树上莫队和带修莫队结合到一起,首先求出括号序,就是进一次出一次那种的,然后如果求两个点 ...
- P5168 xtq玩魔塔 [克鲁斯卡尔重构树+带修莫队]
P5168 xtq玩魔塔 又是码农题- 利用克鲁斯卡尔重构树的性质 我们就可以得出 \(dep\) 值小的,肯定比 \(dep\) 大的值要优. 于是第二问就可以直接 LCA 求出来了- 至于第三问, ...
- CF940F Machine Learning(带修莫队)
首先显然应该把数组离散化,然后发现是个带修莫队裸题,但是求mex比较讨厌,怎么办?其实可以这样求:记录每个数出现的次数,以及出现次数的出现次数.至于求mex,直接暴力扫最小的出现次数的出现次数为0的正 ...
- 【BZOJ-3052】糖果公园 树上带修莫队算法
3052: [wc2013]糖果公园 Time Limit: 200 Sec Memory Limit: 512 MBSubmit: 883 Solved: 419[Submit][Status] ...
- 「洛谷1903」「BZOJ2120」「国家集训队」数颜色【带修莫队,树套树】
题目链接 [BZOJ传送门] [洛谷传送门] 题目大意 单点修改,区间查询有多少种数字. 解法1--树套树 可以直接暴力树套树,我比较懒,不想写. 稍微口胡一下,可以直接来一个树状数组套主席树,也就是 ...
- BZOJ2120 数颜色 莫队 带修莫队
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ2120.html 题目传送门 - BZOJ2120 题意 给定一个长度为 $n$ 的序列 $a$ ,有 ...
随机推荐
- 自动化jenkins报:ModuleNotFoundError: No module named 'common'
直接执行脚本是没有问题,报如下错误: 你已经在run.py脚本加路径了为什么还会报这个错呢,就是你加的路径,应该在所有的包上面,才不会报这个错,如下: 注:以下是我的解决方法仅作参考.如果我的发表的内 ...
- Python 的AES加密与解密-需要安装的模块
踩雷1: #先导入所需要的包 pip3 install Crypto #再安装pycrtpto pin3 install pycrypto from Crypto.Cipher import AES ...
- Hyperledger Fabric CA User’s Guide——配置设置(四)
配置设置 Fabric CA提供了三种方案去配置Fabric CA服务端和客户端,优先顺序是: CLI flags(标识) 环境变量 配置文件 在本文档的其余部分中,我们将对配置文件进行更改.但是,可 ...
- SMR解析
SMR描述 SMR(Shingled Magnetic Recording)叠瓦式磁记录盘是一种采用新型磁存储技术的高容量磁盘.SMR盘将盘片上的数据磁道部分重叠,就像屋顶上的瓦片一样,这种技术被称为 ...
- 在IIS中部署Asp.Net网站
在IIS中部署Asp.Net网站 1.添加IIS或者删除IIS,在控制面板=>程序和功能=>打开或关闭功能 启动iis,右键计算机=>管理=>服务和应用程序=>Inter ...
- ubuntu下Open vSwitch安装
ubuntu下Open vSwitch安装 有关Open vSwitch的安装,网上有各种的教程资料,但一些已经过时,按照网上的教程,花费了大量时间,都没能安装成功.于是,通过查阅官方安装教程以及综合 ...
- Bing词典vs有道词典比对测试报告——体验篇之软件适应性
联网情况: 在联网情况下,针对每一次查询,有道词典的反应速度明显比必应词典快得多.据我推测有以下两个原因: 有道词典有本地词库而必应词典更多依赖联网. 有道词典的服务器在国内而必应的在国外. 断网情况 ...
- 20172321 2017-2018-2 《Java程序设计》第二周学习总结
20172321 2017-2018-2 <Java程序设计>第二周学习总结 教材学习内容总结 第一章要点: 要点1 字符串:print和println用法的区别,字符串的拼接,java中 ...
- BeanUtils解决日期问题
ConvertUtils.register(new DateLocaleConverter(), Date.class); BeanUtils.populate(user, request.getPa ...
- ubuntu16.04+cuda8.0+caffe
=========== 如果出现nvidia-smi failed to communicate with nvidia driver,循环登录情况,则: sudo apt-get remove -- ...