为什么去最优决策点时取最往右的就能过,取最左边的就错了?
inline int answer(int x,int l,int r){
ll mx=inf,rt=r,val;
for(int i=max(l,x+k-1);i<=r;++i){
val=query(root[x-1],root[i],1,idx,k)-c[i]+c[x-1];
if(val>=mx) mx=val,rt=i;
if(val>ans) ans=val,len=0;
if(val==ans) a[++len]=(node){x,i,kth};
}
return rt;
}
就是把 val≥mx 那里改成小于就只有60分。