首页 > TAG信息列表 > 捉迷藏
第62课 捉迷藏 《小学生C++趣味编程》
/* 第62课 捉迷藏 《小学生C++趣味编程》 山上有10个山洞。 10-1--3--6---10 1000次 试编一程序,算一算,兔子尼克躲在几号洞里。 */ #include<iostream> #include <bits/stdc++.h> using namespace std; int main() { bool a[11]; int i,cishu; //第i个洞没有进P2056 [ZJOI2007]捉迷藏
【题意】 给一个树,初始点权全部为0,要求你支持如下操作 1.把一个点的点权异或上1 2.查询树上点权为0的两点之间距离最大的距离 【分析】 仍然考虑先建立点分树,然后对于每个点记录如下信息,开两个可删除的优先级队列记录子树内对自己的贡献,和子树内对fa的贡献 动态维护这些信息,查[ZJOI2007]捉迷藏 解题报告 (动态点分治)
[ZJOI2007]捉迷藏 近期做过的码量最大的一题 (当然也是我写丑了....) 题意 有一个 \(n\) 个节点的树 (\(n \le 10^5\)), 每个节点为黑色或白色. 有 \(m\) 个操作 (\(m \le 5 \times 10^5\)), 操作有两种, 将点 \(x\) 的的颜色翻转. 查询树上距离最远的黑色点对之间的距离. 思路[bzoj1095]捉迷藏
首先有一个东西叫做括号序列,即每一个点入栈加左括号,出栈加右括号容易证明,括号序列中A到B的距离是A到B中消去所有成对出现后剩余括号的数量用线段树来维护,考虑某个区间中两点的距离最大值,分为两种情况:1.点对在左区间/右区间;2.跨过区间的中点前者很好处理,来分析一下后者:容易发现消去