警示后人(如果你s使用t表且WA#1)
  • 板块P1816 忠诚
  • 楼主ericloo0921
  • 当前回复1
  • 已保存回复2
  • 发布时间2024/11/24 19:39
  • 上次更新2024/11/24 21:01:50
查看原帖
警示后人(如果你s使用t表且WA#1)
557698
ericloo0921楼主2024/11/24 19:39

跑st表的代码,在枚举i时,边界是

for (int i=1;i+(1<<j)-1<=n;++i)

这里不减一会被卡测试点1

完整代码是

int logn=log2(n);
for (int j=1;j<=logn;++j){
    for (int i=1;i+(1<<j)-1<=n;++i){
        f[i][j]=min(f[i][j-1],f[i+(1<<j-1)][j-1]);
    }
}

加减运算优先级比位运算高 (才不是线段树位运算写错了debug de了一个小时知道的%)

2024/11/24 19:39
加载中...