[BZOJ 1095] [ZJOI 2007]Hide 捉迷藏】的更多相关文章

在BZ上连续MLE n次后,终于A了. 自己YY的动态点分写法,思路还是很清楚的,但是比较卡内存. 用到了MAP导致复杂度比其他的代码多了一个log,看来需要去借鉴一下别人怎么写的. updata in 2017-05-25: 发现了一些没必要储存的东西. 1. 存储当前重心某子树堆的位置的MAP可以利用在重心树上的儿子记录此信息. 2.求树上距离可以用RMQ,没必要直接拿MAP记下来. 改完这两个令我颇不舒服的地方,复杂度就正常多了. /* 动态树分治 BZOJ1095 全局路径查询 单点修改…
Description 传送门 Solution 先将原树转化成点分树: 然后维护三个堆: \(c[i]\) 保存点分树中子树 \(i\) 中的黑色节点到 \(fa[i]\) 的距离: \(b[i]\) 保存点分树中 \(i\) 的每个儿子的 \(c[i]\) 的最大值: \(a\) 保存点分治的每个根 \(i\) 的最大答案. 注意重复修改可能会导致 \(b[i]\) 储存了两个在同一子树中的节点,在放入 \(a\) 前需判断. Code #include <queue> #include…
Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩捉迷藏游戏.他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达.游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯.在起初的时候,所有的灯都没有被打开.每一次,孩子们只会躲藏在没有开灯的房间中,但是为了增加刺激性,孩子们会要求打开某个房间的电灯或者关闭某个房间的电灯.…
题目链接: TP 题解: 样例好良心,调样例3h一A…… 细节好多……诸如没完没了的pop和push……搞得头都大了. 同情zzh……调了整一天了. 动态点分治裸题……果然每个“裸题”打起来都跟shi一样. 题目: #define Troy #define inf 0x7fffffff #include <bits/stdc++.h> using namespace std; inline int read(){ ,k=;char ch=getchar(); :,ch=getchar(); &…
考试的时候看见这道题,感觉自己能AC掉,然后就冲着正解去了.然后想了想数据结构,应该是平衡树.然而蒟蒻的我忘了平衡树怎么打了..然后就根据自己的记忆和理解打了出来.然后我简单的以为相邻的用个链表就能解决.没想到gg了.因为插一个的时候多出来两个相邻差值,然后会删除掉原来的一个相邻差值.这下我就懵逼了.想了想我能用的数据结构,好像没有什么思路,然后就用了个优先队列.挂掉了. 其实全局差值最小比较好求,用平衡树求一个前驱(<=它的最大值)和后继(>=它的最小值)即可. 然后相邻差值,可以用线段树维…
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1059 分析:不论如何交换,同一行或同一列的点还是同一行或同一列,如果我们称最后可以排成题目要求的主对角线的n个黑色格子为“有用黑色格子",那么如果在初始状态中有2个黑色格子在同一行或同一列那么它们中间必有一个不是”有用黑色格子“(因为不论如何交换他们总是同一行或同一列,必定不能同时成为主对角线上的有用黑色格子).所以我们要找的n个”有用黑色格子"它们的横纵坐标都不同.问题就变成了从…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1093 先缩点,然后就是找最长链,DP一下即可: 注意缩点后的重边!会导致重复计算答案. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; ,maxm=1e6+…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1059 每一列选出一个占据一行才可以: 挫败. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; int T,n,pre[maxn],hd[maxn],ct; bool vis[maxn]; stru…
1095: [ZJOI2007]Hide 捉迷藏 Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩捉迷藏游戏.他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达.游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯.在起初的时候,所有的灯都没有被打开.每一次,孩子们只会躲藏在没有开灯的房间中,但是为了增加刺激性,孩子…
[题目]BZOJ 1095 [题意]给定n个黑白点的树,初始全为黑点,Q次操作翻转一个点的颜色,或询问最远的两个黑点的距离,\(n \leq 10^5,Q \leq 5*10^5\). [算法]括号序列+线段树 [题解]参考:konjac 括号序列其实就是入栈出栈序,每个点在进入时加左括号和点编号,退出时加右括号. 这样做的好处:两个点间的括号数(除去匹配的括号)就是两点间路径的长度. 除去匹配的括号后,容易发现两个点间的括号时")))((("的形式,右括号就是向上一条边,左括号就是向…