CF741C Arpa’s overnight party and Mehrdad’s silent entering
描述:有 (2n) 个人坐在一张圆桌,第 (1) 个位置与第 (n) 个位置相邻。现在给他们分配 (1) 或 (2) 两种食物。要求任意相邻的三个人食物不完全相同。求是否有可行的分配方案。
转换:将任意相邻的三个人不完全相同转换为,要求 (2i) 与 (2i-1) 的食物不同。
CF1592D Hemose in ICPC ?
描述:给定一棵树,每一条边有一个边权。交互中每次询问一个点集,交互库返回这些点中所有相邻的点之间的边的最大值。请求出边权最大的边的两个端点。((nle 1000) ,最多可以进行 (12) 次交互)
转换:因为要尽量选择相邻的点,可以想到用欧拉序来存储相邻的边(的两个端点),每次选取欧拉序上一段边询问,二分即可。
CF1551F Equidistant Vertices
描述:给定一棵树,在其中选出 (k) 个点使得任意两个点之间的距离相等((nle 100))。
转换:若干 (k>2),等价与对于每一个点假定它为根并不选择它,在以它的子树中选择 (k) 个属于不同子树且深度相同的点的方案。( ext{dp}) 处理即可。
P2596 [ZJOI2006]书架
描述:给定一个序列,每次序列中第 (x) 个数放到序列的最前面或最后面,并输出这个数。
转换:开三倍(长度+询问次数)的树状数组,放在最前面或最后面直接把这个数丢到现在的 (L-1) 或 (R+1),查询直接二分((O(log^2)))或树状数组上二分((O(log)))。
并查集将两个点分开
描述:给定 (n) 个点,(m) 次操作,每次规定两个点属于两个不同的集合。对于每次操作判断这次操作是否合法。
转换:对于每个点建立 (x) 和 (x'),属于两个不同的集合即合并 (x,y') 和 (x',y),若某一时刻 (x) 与 (x') 属于同一个集合,那么不合法。