2012年6月17日 星期日

tioj 1699 Problem I 害蟲決戰時刻

shik送我的生日快樂題 >/////////<
很有趣很困難很好玩
其實核心概念只有一個:
若一個區段要 > 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

沒有留言:

張貼留言