很有趣很困難很好玩
其實核心概念只有一個:
若一個區段要 > 1/k,
那『不可以』裁切後的每一個區段都 < 1/k
換句話說,就是對於裁切後的每一個區段,都最多只要看最大的 k 種即可
我的作法:
1. 預處理-
Seg_tree: O( nlogn ) + O( n (logn+1) logn )
Vector: O(n)
2. 每次詢問-
找出可以切成Seg_tree的哪些點( O( logn ))
乘上
對於每個點(logn):看最大的K種( K ) * 二分區間內數量( logn )
總時間複雜度:O( n(logn)^2+sumK(logn)^2 )
code: http://codepad.org/4QB0Eaav
沒有留言:
張貼留言