有很多矩形,矩形可能會重疊,又有很多點分散在平面上,求每乙個點被多少個矩形覆蓋?
方法1:
參考:總體思想是,如果線段樹種的乙個節點,就是這整個區間都在要插入的邊內,則這個節點的計數加1
給乙個n*n的方格棋盤,初始時每個格仔都是白色。現在要刷m次黑色或白色的油漆。每次刷漆的區域都是乙個平行棋盤邊緣的矩形區域。
輸入n,m,以及每次刷漆的區域和顏色,輸出刷了m次之後棋盤上還有多少個棋格是白色。
[問題分析]
首先我們從簡單入手,考慮一維的問題。即對於乙個長度為n的白色線段,對它進行m次修改(每次更新某一子區域的顏色)。問最後還剩下的白色區域有多長。
對於這個問題,很容易想到建立一棵線段樹的模型。複雜度為o(mlgn)。
擴充套件到二維,需要把線段樹進行調整,即首先在橫座標上建立線段樹,它的每個節點是一棵建立在縱座標上的線段樹(即樹中有樹。稱為二維線段樹)。複雜度為o(m(logn)^2)。
方法2:
對矩形排序,如果左邊界相同,按照右邊界排序。
給點乙個點(x,y)
二分查詢左邊界小於x的,然後就可以刪除右邊的矩形,對y也同理
求N 有多少個0,1,2, ,9
給出乙個正整數n 0 n 10000 求n 有多少個0,1,2,9。輸入有一行,為乙個正整數n 輸出n 中0,1,2,9的個數 以空格隔開 10 2 0 1 1 0 0 1 0 2 0 分析 n!最多只有35660位 n 10000時 因為時間充足,所以可採用求大數階乘的演算法求出n!的具體數值,然...
求N!末尾有多少個0
思考 該題實際上是求 2 5 因子對的個數。對於任意乙個階乘,5因子的個數總是小於2因子的個數,僅需考慮n 中5因子的個數 方法 1 將該數用 5 除,得到的商取整數。2 然後再用所得商當被除數除以 5,得到的商取整數。3 持續做到商等於 0 為止。4 過程中的商加總即為階乘的尾數 0 的個數。例 ...
求100000!末尾有多少個0?
這其實是乙個求n的階乘末尾有多少個0的問題 分析 想到這個問題,可能我們第一反應就是現求出n 然後再根據求出的結果,最後得出n 的末尾有多少個0。但是如果是乙個大數,例如100000,肯定會溢位而且效率很低。於是我們另闢蹊徑,把這個問題轉換成那些數相乘可以得到10 這個角度,問題就變得比較的簡單了。...