模拟83 题解

A. 最大异或和

异或是不进位加法。

具有一个很好的性质:$a\ xor\ b=c$    $\rightarrow$     $c\ xor\ b=a$

若所有点的异或和为$0$,那么显然平手。

若异或和不为$0$,先手只要将最高位的$1$选到必胜。

 

 

 

B. 简单的括号序列

考虑暴力做这道题。

那么枚举最后一个必选的左括号的位置,枚举括号的个数。

预处理出左侧的左括号个数$lcnt_i$,右侧的右括号个数$rcnt_i$

那么答案为$\sum \limits_{i=1}^{n} \sum \limits_{j=1}\binom{lcnt_i-1}{j-1}\binom{rcnt_{i+1}}{j}$。

发现这个式子似乎有一丝像卷积式,然而是反着卷的。

然而组合数可以直接把反向的卷积变为正向,于是可以将$n$个组合数相乘求和转化为单个组合数。

 

 

 

C. 旅行计划

对于$k$比较小的情况,可以通过预处理暴力跑。

对于询问比较少的情况,可以倍增$floyd$(或者理解为$min-add$矩阵快速幂)。

然而除去特殊性质就没办法了。

或许想到了倍增,然而只要带$qn^2$必死,根本无法进行倍增的多次拼凑。

所以正解是分块,避免了多次拼凑。

只要处理出$100*k$ $1<=k<=100$步,由$i$到$j$的最优解。

至少$k$步,由$i$到$j$的最优解。

所以可以一步拼凑,做到$O(nq)$。

posted @ 2019-10-23 21:14  skyh  阅读(128)  评论(0编辑  收藏  举报