T1以为是大神题就没敢想??
T2T3自以为想出了暴力很NB。然而只是可怜的大众分。你轻松想到的东西,别人也能轻松想到!!
T1【贪心】【二进制】
将每一个二进制位分开考虑,从高位向低位去考虑,
先手一定会尽量让自己这一位是1,让对手是0,但是由于最终每个点都会被选,
那么对于所有点在某一位上的值异或后==0的情况,显然先手无法选出自己是1,对手是0的情况
而只要有一位的异或值为1,那么先手就会赢
T2【组合数学】
定义f[i]表示考虑到第i位已经有的(数量,g[i] 是从后往前考虑到第i位有的)数量
那么每一个(的贡献== i前( 数量 * i后 )数量
显然强制i位的(必选后再算贡献不会算重或漏
那么考虑优化
从实际意义考虑优化$$sum_{j=1}^{j<=min(f[i],g[j])} C(f[i]-1,j-1)*C(g[i],j)$$
$C(f[i]-1,j-1)==C(f[i]-1,f[i]-j)$
那么原式子就变成了在f[i]-1里选f[i]-j个+在g[i]个里面选j个
也就是在f[i]-1+g[i]里面选f[i]个
T3【DP】【最短路】【分块】
其实感觉就是个DP
定义f[x][y][k]表示从x出发到y,恰好经过k条边的最短距离
转移复杂度O(n^3*k)
枚举k的复杂度很高,用分块思想
定义g[x][y][k]表示从x到y,经过k*100的最短距离
转移$$g[s][x][k]=g[s][y][k-1]+f[y][x][100]$$
最后把f[x][y][k]从前往后扫一遍取最小值,变成至少
每次询问枚举中间点 $$min{g[s][i][k/100]+f[i][t][len\%100}$$