[LOJ#10132]异象石】的更多相关文章

Description Adera 是 Microsoft 应用商店中的一款解谜游戏. 异象石是进入 Adera 中异时空的引导物,在 Adera 的异时空中有一张地图.这张地图上 有 N 个点,有 N-1 条双向边把它们连通起来.起初地图上没有任何异象石,在接下来的 M 个时刻中,每个时刻会发生以下三种类型的事件之一: 地图的某个点上出现了异象石(已经出现的不会再次出现): 地图某个点上的异象石被摧毁(不会摧毁没有异象石的点): 向玩家询问使所有异象石所在的点连通的边集的总长度最小是多少. 请…
Loj 2534 异或序列 考虑莫队离线处理.每加一个数,直接询问 \(a[x]\oplus k\) 的前/后缀数目即可,减同理. 利用异或的优秀性质,可以维护异或前缀和,容易做到每次 \(O(1)\) 移动区间端点. 很久没写莫队了.有一个小细节开始写错了:如果 \(a.belong\) 是根据 \(a.l\) 算出的,排序时的第二关键字就选取 \(a.r\) ,否则会被卡到 \(O(n^2)\) . #include<bits/stdc++.h> using namespace std;…
异象石 CH Round #56 - 国庆节欢乐赛 描述 Adera是Microsoft应用商店中的一款解谜游戏. 异象石是进入Adera中异时空的引导物,在Adera的异时空中有一张地图.这张地图上有N个点,有N-1条双向边把它们连通起来.起初地图上没有任何异象石,在接下来的M个时刻中,每个时刻会发生以下三种类型的事件之一: 1. 地图的某个点上出现了异象石(已经出现的不会再次出现): 2. 地图某个点上的异象石被摧毁(不会摧毁没有异象石的点): 3. 向玩家询问使所有异象石所在的点连通的边集…
Description Adera是Microsoft应用商店中的一款解谜游戏. 异象石是进入Adera中异时空的引导物,在Adera的异时空中有一张地图.这张地图上有N个点,有N-1条双向边把它们连通起来.起初地图上没有任何异象石,在接下来的M个时刻中,每个时刻会发生以下三种类型的事件之一: 1.地图的某个点上出现了异象石(已经出现的不会再次出现): 2.地图某个点上的异象石被摧毁(不会摧毁没有异象石的点): 3.向玩家询问使所有异象石所在的点连通的边集的总长度最小是多少. 请你作为玩家回答这…
期末考试结束祭! 在期末考试前最后一发的测试中,异象石作为第二道题目出现QAQ.虽然知道是LCA图论,但还是敲不出来QAQ. 花了两天竞赛课的时间搞懂(逃 异象石(stone.pas/c/cpp)题目描述Adera 是 Microsoft 应用商店中的一款解谜游戏.异象石是进入 Adera 中异时空的引导物,在 Adera 的异时空中有一张地图.这张地图上有 N 个点,有 N-1 条双向边把它们连通起来.起初地图上没有任何异象石,在接下来的 M个时刻中,每个时刻会发生以下三种类型的事件之一:1.…
题目地址 LOJ 题解 神仙思路.思路参考自<算法竞赛进阶指南>. 考虑维护dfs序中相邻两个石头的距离,那么每次?的答案就是sum/2(首尾算相邻) 然后维护一下拿个平衡树/set维护一下前驱后缀分类讨论一下就行了. 具体的话就是 1.插入x 对ans减去\(dis(pre,nxt)\),再加上\(dis(pre,x)+dis(x,nxt)\),然后插入\(x\) 2.删除x 先删去\(x\),对ans减去\(dis(pre,x)+dis(x,nxt)\),再加上\(dis(pre,nxt)…
题目:https://loj.ac/problem/10132 #include<bits/stdc++.h> using namespace std; ,N,k=,head[]; struct node{ int to,next,w; }e[]; ],grand[][],c[],num[]; ]; void add(int x,int y,int c) { e[++tot].next=head[x],e[tot].w=c,e[tot].to=y,head[x]=tot; } void ini…
一道LCA 原题链接 先跑一边\(dfs\),求出每个节点的时间戳,如果我们将有异象石的节点按时间戳从小到大的顺序排列,累加相邻两节点之间的距离(首尾相邻),会发现总和就是答案的两倍. 于是我们只需要维护这个按时间戳排序的有序数列和答案即可. 当插入一个新的节点\(u\)时,设插入位置的原有两节点为\(x,y\),\(dis(x,y)\)表示两节点间的距离,那么只需要将答案减去\(dis(x,y)\),再加上\(dis(x,u)+dis(u,y)\)即可,删除则类似. 而为了快速求\(dis(x…
题目详见蓝皮书[算法竞赛:进阶指南]. 题目大意: 就是给你一颗树,然后我们要在上面进行三种操作:  1.标记某个点  或者  2.撤销某个点的标记  以及   3.询问标记点在树上连通所需的最短总边权 数据范围: 点数以及操作数:1e5,边权:1e9(意思就是答案要 long long 存). 分析: 这道题比赛的时候看的是真懵逼... 表示只会 n^3 做法(最多会n^2),以及特殊形态(比如链或者菊花图)的骗分法. 然鹅正解大概是 $O(n log n)$  的做法,和树搭上了关系,加上这…
题解: 之前这道题写过两次题解了吧.. 实现的时候可以用set<int,cmp>来实现按照dfn排序 代码: 感觉别人的分类讨论比我的简单.. 但我觉得我这个写起来也不烦就不看别人的了.. 看了一下 发现他们是把一个的前驱后继处理为自己 于是就避免了分类讨论(我xxx) linux复制出来行间距变成两倍了.. #include <bits/stdc++.h> using namespace std; #define rll ll #define IL inline #define…