告诫和我一样写 __int128的人
写转移方程的时候别用位运算,比如这样:
int cnt = max(a[l] * (1 << x) + DFS(l + 1, r), a[r] * (1 << x) + DFS(l, r - 1));
这样只有60. 别问我怎么知道的
解决方法是手写快速幂,当然也可以预处理,就像:
p[0] = 1; for(int i = 1; i <= m; i++) p[i] = p[i - 1] * 2;
然后转移方程的时候用p[x]即可