2016.12.30【初中部 GDKOI】模擬賽B組
總結:
這次比賽做的比較差,沒有發揮出應有的水平,像第一題這種可以稱之為“一眼題”的題目,竟然一分沒拿,找找原因,發現還是比賽時不夠認真,座標說了全部>0,為什麼還考慮負數?題目提醒了資料的範圍,為什麼不改int64,這些毛病都是不容犯的,但還是犯了,哎~
但像T2這種典型的樹形DP題,還要什麼逆元之類的,能水個暴力就行了,不必太過要求高。
第3題更不用說(什麼LCT,什麼鬼嘛)
而第四題,在考試的時候還是有可能可以做出來的,沒有盡力~
下面寫下題解..
題解:
T1:
·不用說了,一眼題,優先佇列維護即可
T2:
·顯然Dp
·f(i)=f(i.left)*(fi.right)*c
·i.left表示i的左節點,i.right表示i的右節點,lefttot表示左子樹的節點數,i-1表示i這棵樹總共有多少個除根外的節點
·之後會發現time over,原因是求c的效率太低
·因為模運算是不茲瓷除法的,當然我們可以把要乘和除的數先分解一下質因數,然後抵消掉再摸,這樣可以解決精度問題,加上記憶化之後大概可以拿到80分
·考慮優化C
·可以用逆元
·why does the 逆元 can do it?
·逆元之所以can do it,是在於它不僅解決了精度問題,而且非常快——把除法轉化為了乘法
·舉個例:(a/b) mod c=x,則x=(a*N(b,c)) mod c
·N(b,c)表示b與c的逆元
·N(b,c)=(b^(c-2)) mod c
·證:
·因為 (b^(c-1) mod c) 恆等於 1(費馬小定理,前提:c為質數),所以,((b^(c-2)) mod c)=1/b
·之後將C的數值帶進計算即可
T3:
·普通的克魯斯卡爾60分
·可以用水法
·掃到一條邊後發現圖被連通了,則從這條邊往回掃,掃到剛好再一次連通時,下次便從這條邊的下一條邊繼續往下掃,以此類推
·優化的正確性顯然
T4:
·考慮最優性
·題目要求字典序最優,也就是每個格能放得數儘量小,則我們從最小的數開始列舉,列舉每一個格,如果當前放的格在我們可以拓展的正方形的第一行,我們就看看能不能拓展,如果不是在一個正方形的第一行,無需考慮拓展
·隨後,對於每一個格,不能與之上下左右重複,並滿足最優,以此類推即可