T1:因为数据随机,所以选择前5000个暴力判断即可。(因为“没有两条共线的线段具有公共点,没有重合的线段”,所以一个十字架只能由两条线段组成)。
T3:设f[i][j][1/2]表示第i个位置为分界线,xor和and的值为j,1位第i位选and,2为第i位选xor。
那么我们枚举i,j(倒着推)
f[i][j][1]=f[i][j][1]+f[i+1][j][1](当前位置不选)
f[i][j][2]=f[i][j][2]+f[i+1][j][2](当前位置不选)
f[i][j&a[i]][1]=f[i][j&a[i]][1]+f[i+1][j][1](当前位置选,前一个位置选)
f[i][j^a[i]][2]=f[i][j^a[i]][2]+f[i+1][j][2]+f[i+1][j][1](当前位置选,前一个位置选,因为是xor在前,and在后,所以xor可由and推来)
初始值为f[i][a[i]][1]=1。
记得用高精度压位,由short型压4位是最优的。
总结:
这题有许多语法知识。
1、short型用%hd表示
2、若想函数的参数值改变,只需在变量前加&,注意,是变量,不是数组。