联考6
T1
可以发现有决策包容性,所以每次调最远的跳,因为最大有\(10^6\),\(nlogn\)写好看点应该可以卡过去。
但是有线性的做法,因为对于每次跳跃,瓶颈只在长度为\(d\)的一段区间,所以所有不超过\(d\)的极大区间的最小值就是答案。
T2
发现操作实际上是将这个数循环左移了一位,这样转化有什么好处呢,将进位的加法转化成了不进位的位运算,于是就可以直接搞了,先预处理出每个前缀左移后的数是什么,然后又可以知道\(x\)循环左移之后唯一对应着一个范围内的数,所以可以不做处理,这样就转化为求某段值域内异或最小值的最大值,在Trie树上分类搜索即可。
注意一定要从高位开始考虑,否则贪心策略不成立。
T3
如果将一个因子放在当前位置\(2\times 3\)和\(2^2 \times 3^3\)是等价的,所以把这种当成一个算乘上一个权值就行了,那么考虑要压缩什么状态,首先想到的应该是出现的质因子集合,但是这样没有办法区分能不能再放质因子,所以记两种,\(s1,s2\)分别表示选了至少一种的质因子集合和选了两种的质因子集合,每次考虑加入的质因子集合是否合法然后加上哈希表记忆化搜索就可。
T4
dsu on tree,对时间开一棵线段树,然后启发式合并
int - > long long
0 - > 100