【題目大意】
有n個操作,分add和ask兩種。
add操作就是新增乙個字串(把ipv4位址轉成32位的二進位制串,取前l位,l為掩碼),保證每次add都不相同。
ask操作給出詢問串s(同樣是ipv4位址轉成32位二進位制串)和區間[l, r],對於這次ask之前的add操作,從頭開始,每add一次,s就會找已經add的串中最長的並且是s字首的串作為匹配。詢問第l個add操作到第r個add操作中,s的匹配更新了多少次。
【30%】n<=1000
n太小了,對於每個詢問,直接暴力列舉前r個add操作中,s的匹配更新了多少次,然後這麼多次更新中,有多少次是在l以後的。
時間複雜度o(n^2)
【100%】n<=10^6
不能列舉操作了。但是注意到s的匹配必須是s的字首,因此我們考慮構一棵trie。
注意這棵trie有個很鮮明的特徵:由於每次add都不相同,所以trie上的每個節點最多代表乙個字串。
因此s在trie上走的時候,最多遇到32個字串,也就是說,s的匹配最多只有32個,這就是該演算法比上乙個演算法優的關鍵因素。
有了這個trie,我們可以輕鬆把32個匹配全部取出來,然後按時間戳排個序,看看哪次會更新,然後這麼多次更新中,有多少次是在l以後、r以前的。
時間複雜度o(n*32)
centos7 2 路由表增刪
問題出現在配置阿里雲ecs是,需要用到eip伺服器內部可見 按照阿里要求,系統和配置選擇好以後,伺服器生成 進入系統發現無法訪問外網,route n 檢視路由,發現路由表出錯 destination gateway genmask flags metric ref use iface 0.0.0.0...
Linux核心分析 網路 四 路由表
路由表 在核心中存在路由表 fib table hash 和路由快取表 rt hash table 路由快取表主要是為了加速路由的查詢,每次路由查詢都會先查詢路由快取,再查詢路由表。這和 cache 是乙個道理,快取儲存最近使用過的路由項,容量小,查詢快速 路由表儲存所有路由項,容量大,查詢慢。首先...
路由表和iptables Linux實現路由器
計算機網路通訊的本質就是ip資料報的 而實現資料報 的基礎就是位於網路中各節點上的路由表 routetable 即使節點不具備資料報 的功能,以其自身 localhost 作為收發終端的的資料報傳遞也要通過其上路由表實現,下圖是對網路節點資料報收發機制的抽象框圖,通常充當網路節點的裝置會具備不只乙個...