主要用於處理不便於合併兩個區間的問題。
題面solution
本題為序列分塊經典題。
顯然要先離散化,對序列分塊。
預處理出:
\(cnt[i][j]\):到\(i\)塊顏色為\(j\)的總數
\(f[i][j]\):從塊\(i\)到\(j\)的眾數:列舉塊的開頭,掃一遍即可
\(num[i][j]\):從塊\(i\)到\(j\)的眾數是什麼數
然後我們在詢問的時候,先把塊裡面的眾數找到,然後暴力處理左右兩邊的散點,開桶計算,每個數字判斷一下即可。
題面問有多少種方法把一顆樹分成若干塊使得每個塊的點數相同。
solution
觀察後可以發現幾個性質:
1.若讓某顆子樹能分成若干個大小為\(x\)的塊,則其點數必為\(x\)的倍數。
2.若讓整棵樹可行,則必須有\(n/x\)個可行子樹。
題面給定一顆\(n\)個節點的樹,把這棵樹分為若干個塊,塊的大小\(<=3b
\&>=b\),兩個塊之間可以共用1個節點,問如何劃分。\(n<=1000\)
solution
暴力搜尋,遞迴結束前進棧,做完乙個孩子節點後檢查,若滿足要求則出棧。
事實上,這是把乙個樹分塊的一種方法
題面維護一棵初始有n個節點的有根樹(根節點為1),樹上節點編號為1-n,每個點有乙個權值wi。
支援以下操作:
0 u x 詢問以u為根的子樹中,嚴格大於x的值的個數。(u=lastans,x=lastans)
1 u x 把u節點的權值改成x。(u=lastans,x=lastans)
2 u x 新增乙個編號為"當前樹中節點數+1"的節點,其父節點為u,其權值為x。(u=lastans,x=lastans)
最開始時lastans=0。
solution
分塊套splay
考慮這樣分塊:dfs,若父親節點所在的塊的塊未滿,則塞入父親節點所在塊中,否則自成一塊。
事實上,這是樹分塊的另一種方法
塊內有序,塊外暴力即可。
奇偶排序:若左端點不在同乙個塊裡面,按左端點排序,否則對右端點排序,當左端點在奇數塊,則把右端點從小到大排序,否則把右端點從大到小排序。
題面每次詢問乙個區間,詢問這個區間內是否有:
任意兩個數相加等於\(x\)
任意兩個數相減等於\(x\)
任意兩個數相乘等於\(x\)
solution
用bitset來存數字是否出現
是否相加有\(x\):將整個bitset向左移動\(x\)位,與原bitset and一下即可
是否相減有\(x\):將整個bitset向右移動\(x\)位,與原bitset and一下即可
是否相乘有\(x\):暴力列舉即可
2015 2 1冬令營日誌
今天的任務 1.寫一篇部落格。2.寫乙個週報。3.聽張老師的講座,感覺還是獲益匪淺。他說我們學校的軟體工程專業現況是有實力與清華北大媲美的,這讓我感到十分榮幸,雖然沒有親自去過清華北大,但這兩所學校的名氣確實是如雷貫耳的,瞬間覺得我還是走上了乙個高富帥的專業。但是,以後的事情還是需要我繼續努力堅持才...
2019徐州冬令營
day1 長短 模擬 資料提取碼 1t2n 題目鏈結 day2 生成排列 資料提取碼 z6e7 題目鏈結 排列組合計數的實驗範例 catalan數 bell數 stirling數 day3 鴿巢原理 資料提取碼 k6b9 題目鏈結 容斥原理 p lya計數公式 群和p lya定理基礎知識 day4 ...
動態規劃(冬令營課堂筆記)
簡單問題 01揹包 012揹包 部分揹包 機器分配 烽火傳遞 花店櫥窗問題 乙個容量為m的揹包,有n個物品,第i個物品的體積為wi,價值為ci。選擇若干物品,使得體積總和不超過m的情況下價值總和最大。n 100,m 10000。搜尋 複雜度為2 n void dfs int x,int y,int ...