【做题记录】人类智慧

CF741C Arpa’s overnight party and Mehrdad’s silent entering

描述:有 \(2n\) 个人坐在一张圆桌,第 \(1\) 个位置与第 \(n\) 个位置相邻。现在给他们分配 \(1\)\(2\) 两种食物。要求任意相邻的三个人食物不完全相同。求是否有可行的分配方案。

转换:将任意相邻的三个人不完全相同转换为,要求 \(2i\)\(2i-1\) 的食物不同。

CF1592D Hemose in ICPC ?

描述:给定一棵树,每一条边有一个边权。交互中每次询问一个点集,交互库返回这些点中所有相邻的点之间的边的最大值。请求出边权最大的边的两个端点。(\(n\le 1000\) ,最多可以进行 \(12\) 次交互)

转换:因为要尽量选择相邻的点,可以想到用欧拉序来存储相邻的边(的两个端点),每次选取欧拉序上一段边询问,二分即可。

CF1551F Equidistant Vertices

描述:给定一棵树,在其中选出 \(k\) 个点使得任意两个点之间的距离相等(\(n\le 100\))。

转换:若干 \(k>2\),等价与对于每一个点假定它为根并不选择它,在以它的子树中选择 \(k\) 个属于不同子树且深度相同的点的方案。\(\text{dp}\) 处理即可。

P2596 [ZJOI2006]书架

描述:给定一个序列,每次序列中第 \(x\) 个数放到序列的最前面或最后面,并输出这个数。

转换:开三倍(长度+询问次数)的树状数组,放在最前面或最后面直接把这个数丢到现在的 \(L-1\)\(R+1\),查询直接二分(\(O(\log^2)\))或树状数组上二分(\(O(\log)\))。

并查集将两个点分开

描述:给定 \(n\) 个点,\(m\) 次操作,每次规定两个点属于两个不同的集合。对于每次操作判断这次操作是否合法。

转换:对于每个点建立 \(x\)\(x'\),属于两个不同的集合即合并 \(x,y'\)\(x',y\),若某一时刻 \(x\)\(x'\) 属于同一个集合,那么不合法。

posted @ 2021-09-24 20:28  EricQian06  阅读(48)  评论(0编辑  收藏  举报