Run ID | User | Problem | Result | Memory | Time | Language | Code Length | Submit Time |
3948653 | slxg | 3321 | Accepted | 9300K | 375MS | Pascal | 1834B | 2008-08-22 16:32:42 |
3948639 | slxg | 3321 | Accepted | 9300K | 407MS | Pascal | 1821B | 2008-08-22 16:30:20 |
3948556 | slxg | 3321 | Wrong Answer | Pascal | 1816B | 2008-08-22 16:18:51 |
这道题的转化比较巧妙~
利用的是树的后序遍历~
后序遍历时间……
把树的查询转换成序列的查询~
用s[i]和t[i]分别表是i及其子树在后序遍历序列中的开头位置和结束位置~
修改时 change(t[i])~注意阿~不是 change(i)阿~ (WA了1次)
查询时 sum(t[i])-sum(s[i]-1)
然后利用树状数组就可以轻松过了~
还有把lowbit加上inline可以节省不少时间,其他的就不用了
如果把树转换成序列能保持有序性,且更容易搞,那就转化吧!!!!!!!