复盘|第95场双周赛
根据规则将箱子分类
【分类讨论】用变量名来简化逻辑。
找到数据流中的连续整数
【模拟】用一个变量cnt记录value的出现次数,遇到就加一,没遇到就重置为0。
查询数组 Xor 美丽值
【位运算】位运算每个比特位互不相干,可以拆分成每个比特位分别计算,对异或结果有影响的是1,所以只需统计(a∣b)&c=1的情况,则c必须是1,a|b必须是1 → a和b至少有一个1。设有y个1,就有n-y个0,那么c有y个,a|b有n^2 - x^2个(任选两两组合n^2,减去两个都是0的x^2个),乘法原理一共(xny-y^2)y个1,异或只关心1的奇偶性,那么2ny可以去掉,可以看成y^3的奇偶性也就是y的奇偶性,y奇数则该比特位异或值为1,所以只要把每个数异或起来。
最大化城市的最小供电站数目
【二分+前缀和+差分数组+贪心】二分答案minPower,从左到右遍历stations,如果stations[i]电量不足minPower,那么需要建供电站来补足。由于i左侧的不需要补足,所以贪心地在min(i+r,n-1)处建是最合适的,恰好让i在覆盖范围的边界上。设需要建m个供电站,那么需要把[i, min(i+2r,n-1)]范围内的电量都增加m。方法很多,用差分数组来更新是最简单的。