本题存在树状数组解法,其中单点更新时用子节点更新自己才为正解:
void change(int x,int d){
a[x]=d;
for(int i=x;i<=n;i+=lowbit(i)){
t[i]=a[i];
for(int j=1;j<lowbit(i);j<<=1){
t[i]=max(t[i],t[i-j]);
}
}
}
但本题若直接更新父结点这种错解也能通过,说明数据没卡住:
void change(int x,int d){
a[x] = d;
for (int i = x; i <= n; i += lowbit(i)) {
t[i] = max(t[i], d);
}
}
这种错误解法在HDU1754上无法通过,因此请求洛谷加强数据。