注意push_up里对区间sin和更改之后再对cos和更改的时候使用的是更改后的sin和
具体的说
void adds(int x,ld sc,ld cc){
vals[x]=cc*vals[x]+sc*valc[x];
valc[x]=valc[x]*cc-vals[x]*sc;
return;
}
这里的vals[x]会被第二行先更改,更改valc[x]的时候使用的是更改过的vals[x]
所以上面的代码改成这样就过了
void adds(int x,ld sc,ld cc){
ld sx=vals[x],cx=valc[x];
vals[x]=cc*sx+sc*cx;
valc[x]=cx*cc-sx*sc;
return;
}
因为这个我被卡了19次,时间跨度10天,真的快要调疯了/ll
往后人不要步我的前尘QAQ