警示:如果用vector存边 这里可能会因强制类型转换出错
查看原帖
警示:如果用vector存边 这里可能会因强制类型转换出错
632785
Sakura_Lu楼主2023/2/8 18:52

在预处理时 如果你像我一样 没有把模意义下的数调整为正数的习惯的话 这里可能会造成错误:

ki[u]=qpow(G[u].size()-resk);
bi[u]=(G[u].size()+resb)*ki[u]%mod;

vector的 size() 返回值类型是unsigned

如果你的数组里存的值是负数 也会被转成 unsigned 类型 你就寄了

正确写法:

ll deg=G[u].size();
ki[u]=qpow(deg-resk);
bi[u]=(deg+resb)*ki[u]%mod;

这个错误其实具有普遍性 跟题目做法关联性不大 但是我自己被坑了 调了好久 警示一下后人

2023/2/8 18:52
加载中...