「GXOI / GZOI2019」旧词】的更多相关文章

LOJ#3088. 「GXOI / GZOI2019」旧词 不懂啊5e4感觉有点小 就是离线询问,在每个x上挂上y的询问 然后树剖,每个节点维护轻儿子中已经被加入的点的个数个数乘上\(dep[u]^{k}\) 新加一个点进去只会经过\(\log n\)条轻边只会更新\(\log n\)个节点 然后再维护一下每个子树里被加入点的个数,每次查询一段重链的链尾要加上重儿子个数减去从y来的那个轻儿子的子树个数乘上\(dep[u]^k\) #include <bits/stdc++.h> #define…
题面 传送门 题解 先考虑\(k=1\)的情况,我们可以离线处理,从小到大对于每一个\(i\),令\(1\)到\(i\)的路径上每个节点权值增加\(1\),然后对于所有\(x=i\)的询问查一下\(y\)到根节点的路径和就是了 那么\(k\neq 1\)的情况该怎么办呢?我们来考虑一下令\(1\)到\(i\)的路径上每个节点权值加\(1\)的本质,相当于是令每个节点\(u\)增加\({dep_u}^k-{dep_{fa_u}}^k\),那么用树剖+线段树维护就行了 //minamoto #inc…
题目 确定这不是思博题 看起来很神仙,本来以为是\([LNOI2014]LCA\)的加强版,结果发现一个点的贡献是\(s_i\times (deep_i^k-(deep_i-1)^k)\),\(s_i\)就是这个点的子树内部\(1\)到\(x\)点的数量 我们发现我们在树剖的时候利用后面那个东西就能来更新答案和打标机啦 照样离线就好了 #include<cstdio> #include<cstring> #include<iostream> #include<al…
「GXOI / GZOI2019」简要题解 LOJ#3083. 「GXOI / GZOI2019」与或和 https://loj.ac/problem/3083 题意:求一个矩阵的所有子矩阵的与和 和 或和. 分析: 或和与是一个东西,只要把所有数都异或上\((1<<31)-1\)然后再从总答案中减掉就能互相转化,考虑求与. 枚举每一位,转化成算有多少个全\(1\)子矩形,单调栈经典问题.总时间复杂度\(\mathrm{O}(n^2\log n)\). 代码: #include <cst…
#3083. 「GXOI / GZOI2019」与或和 题目大意 给定一个\(N\times N\)的矩阵,求所有子矩阵的\(AND(\&)\)之和.\(OR(|)\)之和. 数据范围 \(1\le N\le 10^3\),\(val_{(i,j)} \le 2^{31}-1\). 题解 一眼题. 对于这种位运算的题,题都不用看完先想拆位,拆位可行那就拆,拆位不可行就不拆. 这里指的拆位可不可行具体指的是答案满不满足对于拆位之后的可加性. 发现这个题所求的是个和,那就果断拆开. 这样的话问题就变…
Loj #3085. 「GXOI / GZOI2019」特技飞行 题目描述 公元 \(9012\) 年,Z 市的航空基地计划举行一场特技飞行表演.表演的场地可以看作一个二维平面直角坐标系,其中横坐标代表着水平位置,纵坐标代表着飞行高度. 在最初的计划中,这 \(n\) 架飞机首先会飞行到起点 \(x = x_{st}\) 处,其中第 \(i\) 架飞机在起点处的高度为 \(y_{i,0}\).它们的目标是终点 \(x = x_{ed}\) 处,其中第 \(i\) 架飞机在终点处的高度应为 \(y…
LOJ#3087. 「GXOI / GZOI2019」旅行者 正着求一遍dij,反着求一遍,然后枚举每条边,从u到v,如果到u最近的点和v能到的最近的点不同,那么可以更新答案 没了 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #define space putchar('…
LOJ#3086. 「GXOI / GZOI2019」逼死强迫症 这个就是设状态为\(S,j\)表示轮廓线为\(S\),然后用的1×1个数为j 列出矩阵转移 这样会算重两个边相邻的,只要算出斐波那契数然后乘上N就是不合法的方案 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #…
LOJ#3085. 「GXOI / GZOI2019」特技飞行 这显然是两道题,求\(C\)是一个曼哈顿转切比雪夫后的线段树扫描线 求\(AB\),对向交换最大化和擦身而过最大化一定分别为最大值和最小值 对向交换最大化是每个点都对向交换 擦身而过最大化需要对向交换最小化,我们一次对向交换相当于交换任意两个数,所以就是每个置换圈的点数-1累加即可 #include <bits/stdc++.h> #define fi first #define se second #define pii pai…
LOJ#3083. 「GXOI / GZOI2019」与或和 显然是先拆位,AND的答案是所有数字为1的子矩阵的个数 OR是所有的子矩阵个数减去所有数字为0的子矩阵的个数 子矩阵怎么求可以记录每个位置能向上延伸的高度\(h[i][j]\) 枚举左下角的端点,用一个单调栈维护即可 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_p…