[关闭]
@yang12138 2019-06-05T09:19:52.000000Z 字数 2428 阅读 975

Codeforces Round #563 (Div. 2)

未分类


D: Ehab and the Expected XOR Problem

链接:http://codeforces.com/contest/1174/problem/D

题意:给定正整数,构造一个数列使得:且所有区间异或和的集合不包含,同时最大。

假设对数列求前缀异或和得到,题意的要求可以转换成:不存在且不存在,其中
容易知道从前缀异或和可以转换得到,接下来求
首先,而且
1、如果,那么对每个数来说,唯一存在一个使得,而且是成对的,也就是在个数中,有对数,每对数只能取一个。所以最后会有个数。
2、如果,那么对每个数,都不存在使得,这样的话是一个可行解。
倒过来异或一次就可以得到了。

E: Ehab and the Expected GCD Problem

链接:http://codeforces.com/contest/1174/problem/E

题意:是一个的全排列,定义的前缀的不同数的个数,求使取得最大值的的个数。

假设,其中是互不相同的质数,那么这个排列能取到的最大的,所以全部排列取得的最大值就是分解质因数后质数个数的和,显然能让质数个数最大,其次,如果,那么也能作为一个合格的的取值只有以上两种可能。

定义表示,前个数的前缀,使全部前缀个数最多的全排列个数,那么转移有三种:
1、如果,表示转移到前个数前缀仍为的情况,可以取的数有个。
2、如果,表示转移到前个数前缀的情况,可以取的数有个。
3、如果,表示转移到前个数前缀的情况,可以取的数有个。

初始条件是

如果,那么是答案。
如果,那么是答案。

F: Ehab and the Big Finale

链接:http://codeforces.com/contest/1174/problem/F

题意:交互题,给定一颗有根树,根节点是。数据选定了一个节点,要通过询问得到这个节点,询问最多次,有以下两种询问:
1、d u,后台程序会返回的距离。
2、s u,后台程序会返回的路径上的第二个节点,询问的前提条件是的祖先,如果不符合该条件,直接

先以为根做一个,记录所有节点的深度的深度是),然后询问d 1,可以知道在这颗树上的深度。再以为根一次,记录表示以为根节点的子树中深度为的节点的个数,记录表示的子节点最大的节点。
记录表示节点沿下降次之后的节点。
记录表示节点沿父亲上升次之后的节点。
假设当前在树上的节点,要求的为根的子树上。
1、如果,那么显然
2、询问d down(u,D-dep(u)),得到的结果记录为,那么可以肯定在以为根的子树上,递归计算。
3、特别的,如果,那么说明不在的子树中,询问s u,记录返回值为,递归计算

最大的询问次数可以用计算树链剖分复杂度的方法计算,假设路径经过了条重链,那么最多询问次,

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注