Data Structure

P3586 [POI2015] LOG

题目

单点修改,询问每次选出 \(c\) 个正数,都减去 \(1\),能否进行 \(s\) 次操作。
每次询问独立。

题解

\(>s\) 的数看作 \(s\),每次询问总和是否 \(\ge sc\)

P4113 [HEOI2012] 采花

题目

区间出现次数 \(\ge 2\) 的种类数。

题解

离线,按照右端点排序。扫描线扫描右端点,记录每种颜色最后出现的位置和倒数第二次出现的位置。
维护一个数组,每种颜色倒数第二次出现位置设为 \(1\),每次询问相当于区间求和。树状数组维护即可。

P5309 [Ynoi2011] 初始化

题目

区间求和,下标 \(y,y+x,y+2x,...,y+kx\)\(z\)\(y\le x\)

题解

\(x > \sqrt n\)
直接加,记录每个块的和。

\(x \le \sqrt n\)
记录 \(pre_{x, i}\) 表示每个长度为 \(x\) 周期的前缀和。查询时枚举周期。

P3245 [HNOI2016] 大数

题目

给定一个数组串(可能有前导 \(0\))和一个素数 \(p\)。多次询问一个子串中有多少子串是 \(p\) 的倍数。

题解

\(p = 2\)\(p = 5\)
暴力。

\(others\)
预处理每个后缀的值 \(h\)
每次询问 \(\dfrac{h_i - h_{j + 1}}{10 ^ {j - i}} \equiv 0 \pmod p\) 的个数。
莫队维护即可。

P3979 遥远的国度

题目

给一棵树,有点权,\(3\) 种操作。换根,将 \(x,y\) 路径上的点权就改为 \(v\),询问子树最小值。

题解

\(rt = u\),整棵树最小值。
根在子树 \(u\) 外面,子树不变。
根在子树 \(u\) 里面,设 \(v\) 为 根在原树的祖先 且 是 \(u\) 儿子 的节点,询问的子树就是去掉 \(v\) 子树的所有点。

P5268 [SNOI2017] 一个简单的询问

题目

询问 \(\sum\limits_{x=0}^\infty \text{get}(l_1,r_1,x)\times \text{get}(l_2,r_2,x)\)
$ \text{get}(l,r,x)$ 表示计算区间 \([l,r]\) 中,数字 \(x\) 出现了多少次。

题解

\(F(a, b, c, d)\) 为区间 \([a, b]\) 和区间 \([c, d]\) 的答案。
\(G(x, y)\)\(F(1, x, 1, y)\)
\(F(a, b, c, d) = G(c, d) - G(a - 1, d) - G(b, c - 1) + G(a - 1, c - 1)\)

莫队统计答案即可。

P4689 [Ynoi2016] 这是我自己的发明

题目

一棵 \(n\) 个节点的树, \(m\) 次操作。

1 x 将根换为 \(x\)
2 x y\(x, y\) 子树中各选出一个点,求点权相等的情况数。

题解

P3979 + P5268。
把序列倍长,可以保证每个询问区间都是一段连续段。

P4688 [Ynoi2016] 掉进兔子洞

题目

\(n\) 个询问,每次询问三个区间,把三个区间中同时出现的数一个一个删掉,问最后三个区间剩下的数的个数和,询问独立。

题解

莫队套 btiset。
由于空间原因,把询问分组。

P3674 小清新人渣的本愿

题目

每次询问一个区间是否可以选出两个数的差或和或积为 \(x\)。两个数位置可以相同。

题解

莫队套 bitset。
设当前区间值的 bitset 为 \(s\),负数 \(+1e5\) 的 bitset 为 \(c\)

差:s & (s >> x)
和:s & (c >> 1e5 - x)
积:枚举 \(x\) 的因子即可。

P5355 [Ynoi2017] 由乃的玉米田

题目

每次询问一个区间是否可以选出两个数的差或和或积或商为 \(x\)。两个数位置可以相同。

题解

商为 \(x\),设阈值为 \(S\)

\(x \ge S\)
莫队套 bitset,枚举除数即可。

\(x < S\)
对于每个 \(x\),维护 \(l_i\) 表示在区间 \([1,i]\) 中,满足商为 \(x\) 的二元组的左端点的最右侧的位置。

P3793 由乃救爷爷

题目

随机数据静态区间最大值 \(2e7\)

题解

分块,处理每个块前缀后缀最大值。对于每个块的最大值做 ST 表。

P6177 Count on a tree II

题目

一棵树,多次询问链上有多少个不同的整数。强制在线。

题解

树剖分块套 bitset。

P3603 雪辉

题目

给一个 \(n\) 个点的树,点有点权,有 \(m\) 次询问,每次询问多条链的并有多少种不同的点权以及它的 \(\text{mex}\)

题解

树剖分块套 bitset。
s._Find_first() 找到第一个 \(1\) 的下标。

P6328 我是仙人掌

题目

给定无向图,每次询问给定一些二元组 \((x, y)\),有多少个点 \(u\) 与至少一个二元组满足 \(\text{dis}(u, x) \le y\)。若不连通,\(\text{dis} = \infty\)

题解

bitset。
\(f_{x,i}\) 表示距离 \(x\) \(\le i\) 的点的集合。

P4135 作诗
P4168 [Violet] 蒲公英
CF916E Jamie and Tree
P6009 [USACO20JAN] Non-Decreasing Subsequences P
P6240 好吃的题目
P4396 [AHOI2013] 作业
P3730 曼哈顿交易
P3792 由乃与大母神原型和偶像崇拜

posted @ 2023-09-25 21:42  Estelle_N  阅读(131)  评论(3编辑  收藏  举报