loj#2255. 「SNOI2017」炸弹 线段树优化建图,拓扑,缩点 链接 loj 思路 用交错关系建出图来,发现可以直接缩点,拓扑统计. 完了吗,不,瓶颈在于边数太多了,线段树优化建图. 细节 建新图要判重. 内存永远算不对 代码 #include <bits/stdc++.h> #define ll long long using namespace std; const int N=1e6+7,mod=1e9+7; ll read() { ll x=0,f=1;char s=getc…
本文为线段树做法 (听说可以tarjan缩点+拓扑? 感觉差不多..而且这样看起来方便很多 找到左端点的过程可以看作 点 -> 区间内lowerbound最小的点 -> lowerbound -> 区间内lowerbound最小的点 -> lowerbound -> ...... 所以直接维护每个点lowerbound,线段树维护下就好啦 右端点同理 #include <cstdio> #include <algorithm> #include <…
#2255. 「SNOI2017」炸弹 题目描述 在一条直线上有 NNN 个炸弹,每个炸弹的坐标是 XiX_iX​i​​,爆炸半径是 RiR_iR​i​​,当一个炸弹爆炸时,如果另一个炸弹所在位置 XjX_jX​j​​ 满足: Xi−Ri≤Xj≤Xi+Ri X_i-R_i\leq X_j \leq X_i+R_iX​i​​−R​i​​≤X​j​​≤X​i​​+R​i​​ 那么,该炸弹也会被引爆. 现在,请你帮忙计算一下,先把第 iii 个炸弹引爆,将引爆多少个炸弹呢? 输入格式 第一行,一个数字…
题目:https://loj.ac/problem/2312 https://www.luogu.org/problemnew/show/P3733 原本以为要线段树分治+LCT,查了查发现环上的值直接是 dis[ u ] ^ dis[ v ] ^ w[ i ] 就行了(其中 u , v 是边的两端, i 是边的标号). 再看一下题,发现一开始一定是连通的.所以剩下的就和 bzoj 4184 shallot 一样用线性基就行了. 因为有 1000 位,所以用 bitset . 线性基求最大值原来…
题目传送门 https://loj.ac/problem/3046 题解 首先问题就是问有多少条路径是给定的几条路径中的一条的一个子段. 先考虑链的做法. 枚举右端点 \(i\),那么求出 \(j\) 表示经过 \(i\) 的路径,左端点最小是 \(j\),那么右端点 \(i\) 的贡献就是 \(i-j+1\). 至于求出 \(j\) 可以用直接线性地从右向左扫一遍,在右端点处枚举路径就可以了. 那么问题回到树上. 我们考虑也枚举最终的路径的一个端点. 那么,这个端点的贡献,应该就是经过这个端点…
问题描述 LG1198 BZOJ1012 题解 我们把所有操作离线,设一共有\(n\)个插入操作. 于是提前建立\(n\)个数,全部设为\(-INF\) 接着逐个处理操作即可. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; #define int long long template <typename Tp> void read(Tp &x){ x=0;char ch=1;int fh; wh…
题目描述 \(Frank\) 对天文学非常感兴趣,他经常用望远镜看星星,同时记录下它们的信息,比如亮度.颜色等等,进而估算出星星的距离,半径等等. \(Frank\) 不仅喜欢观测,还喜欢分析观测到的数据.他经常分析两个参数之间(比如亮度和半径)是否存在某种关系. 现在 \(Frank\) 要分析参数 \(X\) 与 \(Y\) 之间的关系.他有 \(n\) 组观测数据,第 \(i\) 组观测数据记录了 \(x_i\) 和 \(y_i\)​.他需要一下几种操作 \(1\ L,R:\) 用直线拟合…
[SNOI2017]炸弹 线段树优化建图,然后跑一边tarjan把点全部缩起来,炸一次肯定是有连锁反应的所以整个连通块都一样-于是就可以发现有些是只有单向边的不能忘记更新,没了. #include <bits/stdc++.h> #define ls(x) ch[x][0] #define rs(x) ch[x][1] #define rep(i , j , k) for(int i = j ; i <= k ; i ++) #define Rep(i , j , k) for(int…
#2254. 「SNOI2017」一个简单的询问 题目描述 给你一个长度为 NNN 的序列 aia_ia​i​​,1≤i≤N1\leq i\leq N1≤i≤N,和 qqq 组询问,每组询问读入 l1,r1,l2,r2l_1,r_1,l_2,r_2l​1​​,r​1​​,l​2​​,r​2​​,需输出 ∑x=0∞get(l1,r1,x)⋅get(l2,r2,x) \sum\limits_{x=0}^\infty \text{get}(l_1,r_1,x)\cdot \text{get}(l_2,…
「SNOI2017」一个简单的询问 简单的解法 显然可以差分一下. \[get(l,r,x)\times get(l1,r1,x)=get(1,r,x) \times get(1,r1,x)-get(1,l-1,x) \times get(1,r1,x)-get(1,r,x) \times get(1,l1-1,x)+get(1,l-1,x) \times get(1,l1-1,x) \] 因为都是1为起始,那么记两个cnt数组,表示前缀,然后可以分成四个区间,莫队. #include <bit…