设dp[n+1][2] j=0是a[i]和a[i+1]中间为+号的情况 j=1是a[i]和a[i+1]中间为|号的情况 首先显而易见的是,j=0的时候,无论前面是什么符号,都能接上,也就是说dp[i][0]=dp[i-1][0]+dp[i-1][1] j=1的时候,只有a[i]|a[i+1]=a[i]+a[i+1]的时候,才能把这两个数中间的+换成| 那么接着可以往后推,设区间[l,r]的和为num,num|a[r+1]=num+a[r+1]的时候,r和r+1中间的加号也可以换成| 而这个num不一定是区间[l,r]的每个数字都相加得到的,还可能是连续按位与得到的(只要连续按位与等于他的区间和...