Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
记一个WAWA的原因 我原来的query的写法如下: int query(int rt,int len) { if(t[rt].slen<len) return -1; if(len == t[rt].r - t[rt].l + 1 && t[rt].c == 0){ //这里使用了t[rc].c == 0判断是否为空 return t[rt].l; } int mid = (t[rt].r + t[rt].l)/2; if(t[rt*2].slen >= len) return query(rt*2,len); else if(t[rt*2].rlen+t[rt*2+1].llen >= len) return mid-t[rt*2].rlen+1; else if(t[rt*2+1].slen >= len) return query(rt*2+1,len); else return -1; } 上面使用t[rc].c来进行判断是错误的因为c是懒惰标记,无法保证使用c的时候c是正确的值 考虑如下数据 10 4 1 3 1 7 2 1 5 1 3 正确输出 1 4 1 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator