rt,我使用如下的线段树上二分代码,样例都没过,能 AC。。。old record
int query(int i,ll tim,ll hp){
if(tr[i].l==tr[i].r)return 0;
pushdown(i);
int mid=tr[i].l+tr[i].r>>1;
if(tr[i].sum*tim<=hp)return tr[i].len;
else{
if(tr[i<<1].sum*tim>=hp)return query(i<<1,tim,hp);
else return tr[i<<1].len+query(i<<1|1,tim,hp-tr[i<<1].sum*tim);
}
}
然后我去掉代码中标记的这一行(如下),样例通过,并且 AC 此题。new record
int query(int i,ll tim,ll hp){
if(tr[i].l==tr[i].r)return 0;
pushdown(i);
int mid=tr[i].l+tr[i].r>>1;
if(tr[i<<1].sum*tim>=hp)return query(i<<1,tim,hp);
else return tr[i<<1].len+query(i<<1|1,tim,hp-tr[i<<1].sum*tim);
}
因此,请求加强数据。