BZOJ2120 数颜色 莫队 带修莫队】的更多相关文章

题目描述 墨墨购买了一套\(N\)支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: \(1\). \(Q\) \(L\) \(R\)代表询问你从第\(L\)支画笔到第\(R\)支画笔中共有几种不同颜色的画笔. \(2\). \(R\) \(P\) \(Col\) 把第\(P\)支画笔替换为颜色\(Col\). 为了满足墨墨的要求,你知道你需要干什么了吗? 输入格式 第\(1\)行两个整数\(N\),\(M\),分别代表初始画笔的数量以及墨墨会做的事情的…
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath> #define R(a,b,c) for( register int (a) = (b); (a) <= (c); ++(a)) #define nR(a,b,c) for( register int (a) = (b); (a) >= (c);…
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ2120.html 题目传送门 - BZOJ2120 题意 给定一个长度为 $n$ 的序列 $a$ ,有 $m$ 次操作,每次操作可能是如下两种类型之一: 1. 询问区间不同值的个数. 2. 修改一个 $a_i$ . 对于每一次询问,输出结果. $n,m\leq 10000,\ \ \ \ 1\leq a_i\leq10^6$ 题解 带修莫队裸题. 打错一个变量找了20分钟. 代码 #include <…
题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2. R P Col 把第P支画笔替换为颜色Col. 为了满足墨墨的要求,你知道你需要干什么了吗? 输入格式 第1行两个整数N,M,分别代表初始画笔的数量以及墨墨会做的事情的个数. 第2行N个整数,分别代表初始画笔排中第i支画笔的颜色. 第3行到第2+M行,每行分别代表墨墨会做的一件事情,格式见题干部…
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ3052.html 题目传送门 - BZOJ3052 题目传送门 - UOJ#58 题意 给定一棵树,有 $n$ 个节点.有 $m$ 种颜色,第 $i$ 个节点的颜色为 $c_i$ . 给定参数 $v_{1},v_2,\cdots,v_m$ 和 $w_1,w_2,\cdots ,w_n$ ,具有以下意义: 第 $i$ 次遇到颜色为 $j$ 的节点,新得到的收益为 $v_{j}\times w_i$ .…
传送门 只有第一个,第二个权限题. 分块,然而wa,没看出来错在哪里,有时间再看. #include <cmath> #include <cstdio> #include <iostream> #include <algorithm> , M = ; int n, m, S, C; int a[N], st[N], ed[N], belong[N], pre[N], last[M], c[N]; inline int read() { , f = ; cha…
十分玄学的数据结构~ code: #include <bits/stdc++.h> #define N 1000006 #define setIO(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout) using namespace std; int n,m,ans,B,cnt,tot,now; int a[N],tim[N],output[N]; str…
BZOJ2120 数颜色 Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2. R P Col 把第P支画笔替换为颜色Col. 为了满足墨墨的要求,你知道你需要干什么了吗? Input 第1行两个整数N,M,分别代表初始画笔的数量以及墨墨会做的事情的个数.第2行N个整数,分别代表初始画笔排中第i支画笔的颜色.第3行到第2+M行,每行分…
点此看题面 大致题意:告诉你\(n\)只蜡笔的颜色,有两种操作:第一种操作将第\(x\)只蜡笔颜色改成\(y\),第二种操作询问区间\([l,r]\)内有多少种颜色的蜡笔. 考虑普通莫队 这题目第一眼看上去感觉和[洛谷2709]小B的询问很像,然后就自然而然地会想到用莫队去做. 但是,在仔细想想,就会发现这道题中有修改,普通的莫队是做不了这样的题目的. 于是,我们就要用一种新的算法:带修莫队. 带修莫队 如果你会带修莫队,那么这题应该就是一道简单的板子题了. 对于每一个询问,记录下在这次询问前进…
题目链接 [BZOJ传送门] [洛谷传送门] 题目大意 单点修改,区间查询有多少种数字. 解法1--树套树 可以直接暴力树套树,我比较懒,不想写. 稍微口胡一下,可以直接来一个树状数组套主席树,也就是待修的主席树. 然后查询的时候,两个根节点减一下就可以了. 解法2--带修莫队 这是带修莫队的模板题. 最简单的莫队是是一个二元组\((l,r)\),这里引入了一个新的参数,变成了三元组\((l,r,t)\),\(t\)所表示的是在这个查询最前面的哪一个修改的编号. 然后我们这个\(t\)当做第三关…