首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
bzoj2759
】的更多相关文章
【bzoj2759】一个动态树好题
Portal -->bzoj2759 Solution 哇我感觉这题真的qwq是很好的一题呀qwq 很神qwq反正我真的是自己想怎么想都想不到就是了qwq 首先先考虑一下简化版的问题应该怎么解决: 1.如果说我知道\(x_1\equiv k_1*x_2+b_1(mod\ 10007)\),并且\(x_2\)已知,那么显然有当\(k_1=0\)时有\(x_1=x_2\):\(k_1=1\)且\(b_1=0\)时有无数组解,\(k_1=1\)且\(b_1\)不为\(0\)时无解:\(k_1>1\)…
BZOJ2759: 一个动态树好题
BZOJ2759: 一个动态树好题 Description 有N个未知数x[1..n]和N个等式组成的同余方程组:x[i]=k[i]*x[p[i]]+b[i] mod 10007其中,k[i],b[i],x[i]∈[0,10007)∩Z你要应付Q个事务,每个是两种情况之一:一.询问当前x[a]的解A a无解输出-1x[a]有多解输出-2否则输出x[a]二.修改一个等式C a k[a] p[a] b[a] Input N下面N行,每行三个整数k[i] p[i] b[i]Q下面Q行,每行一个事务,格…
BZOJ2759 一个动态树好题 LCT
题解: 的确是动态树好题 首先由于每个点只有一个出边 这个图构成了基环内向树 我们观察那个同余方程组 一旦形成环的话我们就能知道环上点以及能连向环上点的值是多少了 所以我们只需要用一种结构来维护两个不是直接相连点的状态 由于有删边连边操作,比较容易想到lct 我们按照套路将它拆掉一条边形成一颗树 因为我们现在只知道环上某一点的值,所以我们这棵树应该是不随便换根的 每次询问只需要把当前这个点access再splay一下 查询用根怎么表示就可以了 修改方程组等价于删一条边,连一条边 删的边如果不在环…
BZOJ2759一个动态树好题 LCT
题如其名啊 昨天晚上写了一发忘保存 只好今天又码一遍了 将题目中怕$p[i]$看做$i$的$father$ 可以发现每个联通块都是一个基环树 我们对每个基环删掉环上一条边 就可以得到一个森林了 可以用$LCT$维护 这时我们思考如何求解 对于一个环 拆掉边$(u,fa[u])$得到一条链$($下令$v=fa[u])$我们通过关系是从链头$u$向下递推 在$v$点可以得到 $x_v=k_1x_u+b_1$ 由删掉的$(u,v)$边可得关系式 $x_u=k_2x_v+b_2$ 带入$x_u$即可解得…
bzoj2759
题解: lct+解线性方程组 首先先把每一个环搞出来,然后再建立一个额外的点 然后解方程.. 代码: #include <bits/stdc++.h> using namespace std; ,M=; ],ni[N]; ]; ]==x;} struct node { int k,b; node(){} node(int k,int b):k(k),b(b){} friend node operator + (const node &r1,const node &r2) {re…
LCT专题练习
[bzoj2049]洞穴勘测 http://www.cnblogs.com/Sdchr/p/6188628.html 小结 (1)LCT可以方便维护树的连通性,但是图的连通性的维护貌似很麻烦. [bzoj1050]旅行 题意 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大边和最小边的比值最小.如果S和T之间没有路径,输出"IMPOSSIBLE",否则输出这个…