求递增子序列所有不同的异或值
显然,对于递增子序列x<y<z,ax XOR ay XOR az=A,如果有d>z,ad>az,那么可以得到A XOR d
于是有两种方法来通过动态规划转移:
方法一:
按序列的下标从小到大开始转移,对于当前序列的下标i,一定是目前最大的,dp[x]存前面的递增子序列异或得到x时递增子序列最后一个数的最小值,只要那么只要满足a[i]>dp[x]就可以得到(a[i] XOR x)
方法二:
按序列的值从小到大开始转移,对于当前序列的值i,一定是目前最大的,dp[x]存前面的递增子序列异或得到x时递增子序列最后一个数下标的最小值,只要那么只要找到最小的pos,(pos>dp[x]&&apos==i)就可以得到(i XOR x)