题意 bzoj 做法 考虑插入$[l,r]$ 在线段树内查询包含$l/r$的,到达一个节点,将节点集合与其合并,仅保留该点(带权并查集) 将$(l,r)$内插入线段树,每个节点维护一个集合 考虑查询$a\longrightarrow b$ 若不在一个集合内,还有一种可能就是$a$被$b$的集合包含 ...
分类:
其他好文 时间:
2020-05-31 18:18:16
阅读次数:
71
LINK:波波老师 LINK:同bzoj 1396 识别子串 不过前者要求线性做法 后者可以log过。实际上前者也被我一个log给水过了. 其实不算很水 我自认跑的很快罢了. 都是求经过一个位置的最短的 在整个字符串中只出现过一次的子串。 SAM很容易完成这个东西. 考虑对于计算每个节点的贡献 容易 ...
分类:
其他好文 时间:
2020-05-31 15:55:57
阅读次数:
53
数学计算(线段树乘法) Describe 小豆现在有一个数 x,初始值为 1 。 小豆有 Q次操作,操作有两种类型: 1 m: x=x×m,输出 xmodM; 2 pos: x=x/ 第 pos 次操作所乘的数(保证第 pos 次操作一定为类型 1,对于每一个类型 1 的操作至多会被除一次),输出 ...
分类:
其他好文 时间:
2020-05-27 23:13:18
阅读次数:
98
题目链接 考虑将每个矩形看做两次操作,分别是在$Y$轴上叠加线段和去除线段。按$X$坐标排序后依次访问扫过。 注意:本题中,坐标表示的是直角坐标系的整点坐标,也即我们计算的是连续的面积,不过这里矩形都是水平的。 那么离散化一波,每个离散点表示到它的后继之间的线段。 考虑使用线段树,维护“覆盖计数”和 ...
分类:
其他好文 时间:
2020-05-27 22:01:47
阅读次数:
80
题目 小豆现在有一个数 \(x\) ,初始值为 $1$ 。 小豆有 \(Q\) 次操作,操作有两种类型: \(m\): \(x=x×m\),输出 \(x\mod M\) ; \(pos\): \(x=x/\) 第 \(pos\) 次操作所乘的数(保证第 \(pos\) 次操作一定为类型 $1$,对于 ...
分类:
其他好文 时间:
2020-05-27 20:46:10
阅读次数:
73
题目 原题地址 解说 每次操作看成一个点,用线段树维护区间的积,没什么可说的。 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int Q=1e5+5; inline ll read(){ ll ...
分类:
其他好文 时间:
2020-05-27 20:18:50
阅读次数:
52
传送门 神仙题,看题解看了一个多小时才看懂 首先我们设$Pre_i$和$suf_i$分别表示$1$到$i$需要的额外油量和$i$到$1$需要的额外油量,那么有 \[ \begin{aligned} Pre_i=Pre_{i-1}-a_{i-1}+w_{i-1}\\ suf_i=suf_{i-1}-a ...
分类:
其他好文 时间:
2020-05-27 12:17:56
阅读次数:
64
POJ 2104 K-th Number 题意:给出一段数列,让你求[L,R]区间内第k大的数字 #include <cstdio> #include <cstring> #include <iostream> #include <vector> #include <algorithm> using ...
分类:
其他好文 时间:
2020-05-26 22:13:05
阅读次数:
76
分析 如果采取暴力的做法,那么乘起来会炸longlong,除非写个高精。 再考虑乘一下逆元呢,显然也不行,模数不一定为质数。 这道题的关键点在于这句话,对于每一个类型1的操作至多会被除一次 这句话的最基本的告诉了我们每次得到的答案一定是一个整数 其次,这句话保证了可以应用线段树解决这个问题 如果除的 ...
分类:
其他好文 时间:
2020-05-26 22:11:42
阅读次数:
59
题目连接 分析: 题意很清楚,首先不要没有头绪,我们想一想如果是区间乘%一个数怎么做?直接线段树,然后再看本题,搞一个数组,如果是操作1,对应的数字就是val,操作2对应的就是1,然后对于操作1,就是求1到i的乘积,对于2,直接求1到val-1和val+1到i的乘积.解决问题. 代码: #inclu ...
分类:
其他好文 时间:
2020-05-26 20:14:04
阅读次数:
63