A. 直接模拟
B. 查询特定的位置的数字可以递归处理,然后分别查询第 l 到第 r 位的数字
C. 只有 1024 种数字,考虑计数排序,只需对每种数字根据 rank 讨论有多少个要被 xor 上一个 x,转移到对应的位置,重复做 k 次
D. dp[i][j] 表示 i 天后能收集到 j 种物品,那么有转移 dp[i][j]+=dp[i-1][j]*j/k 和 dp[i][j+1]+=dp[i-1][j]*(k-j)/k,天数卡到 1e4 肯定是足够的
E. dfs(n,S) 表示现在还有 n 个石子且 S 集合中的数字不能再取这个局面下的 SG 值,由于最后实际上会搜出一个划分,可以粗略估计一下状态数不超过 sum 2^数字种类 对所有 1 到 60 的划分求和,这个数字大约是 6e6,实际搜索之后发现状态数大约是 9e5,直接交搜索就可以通过
F. 先特判 w=0,否则枚举 w 分成多少堆,之后是大家都会的隔板,一个值得关注且容易证明的事实是 q=C(f+w,w),所以不需要考虑 q mod 1e9+7 =0 的情况