没做这套,但是看舍友做了。。 考虑f(i)为结尾为i的答案,等于f(i-1) 1*a(i)^a(0) 2 * a(i)^a(1) ... (i-1) * a(i) ^ a(i-1)。 所以我们想要个异或的前缀和,前缀和一般是能预处理出来的,但是这里带一个系数,如果a(k) (k<i) 和 a(i)的某一位不相等,它会给k 1次贡献。所以你考虑前i-1个数每一个数在32位里的贡献,每个数k的贡献要乘以系数k 1。具体来说,设zeros[n][32] ones[n][32]为0,a[1]是3,那么ones[1][0] ones[1][1]分别加2,zeros[1][2-32]分别加2。a[i]的某位是0,就跟ones[i-1][那一位]去求,反之亦然。

相关推荐

10-25 12:05
已编辑
湖南科技大学 Java
若梦难了:我有你这简历,已经大厂乱杀了
点赞 评论 收藏
分享
10-15 16:27
门头沟学院 C++
LeoMoon:建议问一下是不是你给他付钱😅😅
点赞 评论 收藏
分享
牛客网
牛客企业服务