Well
Time flies
Here come the last week
Are you ready?
Come on !
2019/11/11
1.考試題【√】
2.週末作業【√】
3.模板練習
今天考試
T1 100pts
T2 100pts
T3 10pts
Total:210pts
最高:260pts
T1 簽到題
T2 組合數學(打表找規律)
但是正解真的很棒啊
設選出來的數從小到大爲,考慮令𝑏𝑖 = 𝑎𝑖 + 𝑖,我們會發現,b中全是偶數並且兩兩互不相同,一個b唯一對應一個a那麼問題等價於從1到n+m中選擇m個偶數的方案數這個顯然就是從1到⌊n+m2⌋中選m個數
T3 線段樹
emmm……本來也想到了qn的做法,但是沒有處理好。最後直接交了一個qn2logn的,拿了10pts
改了一發暴力
其實不需要像我之前那樣把每個區間取出來,直接在線段樹上做,就可以計算父親對它的影響了
WOJ#4814學園祭的樂隊
一拿到題就jio得這是個dp,結果lsr說我還是太naive了
數據範圍那麼大1e6,怎麼可能是dp
考慮計算每個1的貢獻(也就是有多少的概率會在當前位置停下)
發現最後的染色方案(也就是換弦)一定是一個排列,表示在這個位置被換了
相當於就是求有多少個排列
考慮一個排列 p 如果要在第 k 個位置上的 1 結束,那麼 pk ≥ k,且對於之前所有位
置是 1 的位置 i, 要滿足 pi < i,從左到右考慮每一個爲 1 的位置。
設 ai 爲第 i 個 1 的出現位置,在第 k 個 1 處結束的合法的排列的方案數就是
對於最後一個位置,只要能夠走到,就需要計算入答案
WOJ#4814 生與死的境界
哇,好一個貪心!
考慮合併的時候新的貢獻爲,對於前面那個數相當於沒有改變,只是後面那個數對答案的貢獻有變化
一個顯然的貪心,對於正數,我們一開始就把它往前合併(這樣係數肯定更大)。對於負數,我們就放到最後,等前面的都合併完了,再處理它。
由於我們最多合併n次,所以複雜度是沒問題的(一開始把每個數都當做一個獨立的塊,每次合併最多減少一個塊,總共合併n次)
詢問離線處理,整塊直接調用答案,散塊hash計算
最後一週了,我還想做:
NOIP真題做完
模板複習到位
學習自己的博客(既然時間不允許我重做以前的考試題了,那就看看以前的博客)
粗略計劃如下:
週二:複習數論模板+靶形數獨
週三:複習圖論+動態規劃
週四:複習字符串+博客
週五:複習數據結構+博客
2019/11/12
WOJ#1846 靶形數獨
就是想寫搜索
今天考試
T1 40pts
T2 30pts
T3 10pts
Total:80pts
最高:250pts
T1
推了一個小時,沒有想到結論。。
lsr的優秀暴力:
首先肯定可以建一顆trie樹,然後就考慮在這個樹上瞎搞。。思考一下前序遍歷、後序遍歷、中序遍歷,,發現,啊……都不可以。DFS好像可以??爲什麼嘞?因爲DFS遍歷下去,相同的前綴一定是單調不減的。題目限制就滿足咯~
但這樣爲什麼只是暴力呢
顯然Trie樹是開不下1e7的
我們把在Trie樹上的dfs遍歷特殊化,其實按字典序來就可以了
感性理解一下,字典序是比較兩個字符串第一個不同的值的大小(越靠近的兩個數肯定相似度越高)
T2
接近正解了,只是沒有繼續優化二分
(我記得我開了-Wall的啊……一定要用!long long輸出居然用%d???)
希望在小於O(n)的時間內求出每個 t 需要減去的 x 的數量
寫成數學表達形式
然後你發現這個東西沒有辦法直接變成
怎麼辦呢
手玩幾組數據試一下
發現 是肯定被包含在答案內的,然後就是一個是否 - 1 的判斷了
需要-1的就是 滿足
主席樹搞一下即可(求某個區間內小於等於某個數的個數)
T3 組合計數
比較簡單的一道組合計數。。
結果我入坑dp(明明都知道那是暴力,還沒寫出來??)
BZOJ#1257 餘數之和
發現(式子的轉化!)
然後我們所求的東西就可以提做:
然後就很好玩了(๑′ᴗ‵๑)
考慮如何快速地求解後半部分
顯然在某一區間範圍內時是一個定值
那我們直接根據這個劃分區間(不超過個區間)
區間爲
感性理解一下
BZOJ#1053 反素數
搜索(剪枝不會。。)
慢慢發現
題目給出的式子,大多數情況下都是不可計算的。。
需要自己靠腦子轉化呀( ̄▽ ̄)~*
POJ#3696 The Luckiest Number
好妙啊!
首先x個8連在一起構成的正整數可以表示爲(適當擴展一下,其實8可以換成任意數字)
現在我們需要求滿足的最小x
來一波推導
令
得到:
也就是說
然後根據某種不知名的引理,可以得到
滿足的最小正整數是φ(n)的約數(證明見算法競賽page 146)
注意判斷一下快速冪的時候直接相乘會不會爆long long(要用快速乘)
2019/11/13
CH3401 石頭遊戲 矩陣快速冪
狀態矩陣一般都是一維的
所以我們將一開始的石頭矩陣,拉成一維的
然後由於每個格子的操作序列是獨立的,但每個長度都不超過6
所以在60次操作後,所有的格子的操作序列都會重置爲原序列
我們就處理出1~60次的轉移矩陣,然後將t=q*60+r
BZOJ#1951 古代豬文
哇,超級大好題(巨經典)
包含了Excrt,Exgcd,Lucas等一系列數論模板操作!
先用歐拉定理對指數取模
然後用中國剩餘定理求解大質數的取模操作
什麼事情都還沒做,,,我還沒開始複習圖論啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!破爛數論!!!!我我我我我我。。。。
現在:
古代豬文。【√】
錯誤總結。【半√】有點水
圖論複習。
2019/11/14
CSP退役前最後一考
T1 100pts
T2 70pts
T3 25pts
Total:195pts
最高:270pts
心態把握還行。主要是部分分給的很足。
雖然11:00才調完T1,但還好穩住了沒有慌。儘量做到了仔細地把暴力敲完,希望CSP的時候也可以穩住(姑娘你可以的!)
T1 最短路
跑10個最短路,然後dfs
T2
注意到了葉子結點數<=10,但仍然不會做
主要是鏈上的情況都不會處理,更不用說將葉子兩兩組合起來變樹爲鏈
對於鏈上的情況,我們考慮增量構造
當前加入的數如果爲u,則u之後的序列一定分爲了若干段,每一段的前綴Gcd相同,而我們至多有Log(n)段(考慮每次gcd的變化最少除以2,最多除以log次)
然後就暴力修改合併即可
至於如何把樹變成鏈,由於葉子結點非常的少,我們直接暴力將每個葉子結點作爲根
T3
好妙的一個dp啊
表示處理了前i個位置,已經分了j個塊的方案數
考慮當前的第i個位置
有兩種入邊,兩種出邊
一共四種情況
WOJ#4133 小C的序列
增量構造,鏈表維護相同的一段gcd
caicai 15928837680
考前開-Wall -Wextra 自動保存
下午改題+WOJ#4133 小 C 的序列
複習圖論
任務:
- 次小生成樹【√】
- 企鵝棋【√】–>抄std
- 觀光公交(ldx太棒啦)
最後的任務:
1.數列分塊2,3【√】
2.線段樹分治【✓】
3.博客複習&字符串的操作&CSP下發文件
4.總結一下
數列分塊2
給出一個長爲 n 的數列,以及 n 個操作,操作涉及區間加法,詢問區間內小於某個值 x 的元素個數。
因爲需要小於某個值x的元素個數,如果塊內的元素是有序的,那不就可以直接二分了嗎~~
數列分塊 3
給出一個長爲 n 的數列,以及 n 個操作,操作涉及區間加法,詢問區間內小於某個值 x 的前驅(比其小的最大元素)。
將分塊2中的二分稍微變一下即可
博客複習:
1.dp
2.圖論
3.Diary