Dairy?Diary!

2019/9/20

既來之則安之。沒什麼好惆悵好難過的。
競賽本來就是你現在的任務重心
這樣的安排也可以爲你提供更多的學習時間
你不是總鬧着時間不夠用嗎
現在就好啦,你可以抓緊時間搞了

每週六8:00上課
買初賽的書
明天(9.21)講快速冪

任務安排:
17:25下課回去收拾東西(筆袋,水杯)
所以你現在還有大約兩個小時的時間
[√]15:20 - 15:45 均分紙牌學習
15:50 - 15:55回去拿東西
15:55 - 16:40 WOJ#1957 糖果傳遞
16:40 - 17:25 WOJ#1593 聯合權值

均分紙牌:
0)假設紙牌數量可以是負數
1)對於最左邊的紙牌,爲了使它的紙牌數達到平均,只要還沒有達到平均無論其餘子情況如何移動,一定有一步是把自己多餘的紙牌移動到右邊,或者是從右邊移動進來自己差了多少張紙牌
2)第一堆牌只有和右邊進行交互是合法的,步驟1是必須的
3)處理好第一堆後,其餘操作一定不涉及第一堆,否則答案更劣(經過前一堆是沒有意義的)
4)無視第一堆,於是現在又是情況1了(子結構)
5)對於一個會出現負數的方案,通過調整移動順序,一定可以轉變爲一個不出現負數的方案。

帶權中位數:
給定 N 個有序的數,每個數都有一個權值Di
此時的中位數就不再是第N/2 個數了,而是∑D[i]/2 這個數。
其實中位數可以看作是權值爲 1 的帶權中位數。

實際:
只完成了糖果傳遞

晚上:
計劃:NOIP真題兩道[√]
17:40-18:40 NOIP2014 Day1T2 聯合權值 18:20[√]
18:20-18:50 模板測試-線段樹 19:45[√](取模真的超級關鍵吶!!!)
19:50-21:00 NOIP2016 Day1T3 換教室 21:24[√](抓緊時間,少說話,多做事)

感想:
f[i][j][0/1]表示前i個課程申請了j門,當前這門課是否申請的期望最小值

知道狀態定義後……
就很簡單了

可問題就是如何定義這個狀態。
可能這就是我和神仙的差距吧。
              --《論NOIP與NOI的差距》

             
21:00-22:00 NOIP2015 Day2T1 跳石頭 21:39[√](T1果然還是比較簡單。二分即可)

2019/9/21

8:25-8:40 推矩陣式子
8:40-12:00 考試

T1 WOJ#2363 路面修整 0pts

原題啊,1月25日才做了的啊。。
欲哭無淚,完全沒有想到要dp,連貪心都不知道該怎麼打。
像只無頭的蒼蠅,找不到方向。總是這樣,看到dp定義的式子後就能明白,自己就不能想到式子。
每次都說要多練題,但真的有多做嗎?(反省ing)
做的又少,做了又忘,菜雞真的很無奈
不,我會加油練的!!!

f[i][j]表示前i個數,最後一個修改爲b[j](b[j]表示原高度從小到大排序後的數組)的最小值
f[i][j]=min(f[i][j],f[i-1][k]+abs(a[i]-b[j])) 1<=k<=j
但這樣就是n^3的了
仔細想一下,發現可以直接變成
f[i][j]=min(f[i][j-1],f[i-1][j]+abs(a[i]-b[j]))
(因爲f[i][j-1]會包含f[i-1][1~j-1]的情況)

下午改題,講課,初賽註冊。
沒有改完考試題……

2019/9/27

本來應該15:00就到機房學習
然後出於該死的班級責任感,下去練習跳繩了。

突然感慨萬千

也許到最後沒有人會在意過程中我們經歷了什麼,但至少我們知道。
當每一個姑娘從害怕、退卻到嘗試,再到失敗,然後重新開始。
這中間的淚水、汗水以及最後的成功。

全世界都會爲你歡呼。
你從來沒讓我們失望。

所以現在,
收拾心情,迴歸競賽。
我也不能讓大家失望,是吧。

任務安排

1.上週考試的兩道題
2.NOIP真題兩道

16:20~17:20 WOJ3316 MAF-Mafia [√]17:27(保證思路的清晰)
17:30~18:00 喫飯(正值排隊高峯期……下次要麼早走要麼晚走)
18:00~18:45 WOJ2354 翻格子游戲[√]19:30 (n和m打錯……)

19:30~22:00 WOJ1582 憤怒的小鳥
哇,猝死機房
錯誤的貪心,還蠢蠢地調了那麼久┭┮﹏┭┮

先選sze最大的情況,可能沒有幾條較小的拼起來優
我的天啦!!!浪費了一晚上
所以說要想清楚再下手
你想啊,如果這樣就是對的,還有dp的作用嗎。。。直接排序貪心就好啦(做夢吧!)

2019/9/28

昨天晚上和daddy談了很久(zZ困Zz)
說到競賽的學習方法,雖然daddy也不是很懂,但他覺得學習的套路都是一樣的。
最後我們一致認爲需要把以前做過的考試題重新做一遍,就像文化課的學習需要用到錯題本,以前不會的後面再重做(多半還是不會)。加深自己對這個方法的應用(像之前每次做到原題還是不會做)。
但是聯賽真題還是需要完成。
所以每天晚上的刷題:兩天做以前的題,兩天做真題,兩天做專題訓練

其實昨天晚上差點和daddy吵起來,在講到文化課的學習的時候,他讓我一定要整理錯題,可是我沒有那麼多時間!但今天冷靜下來想想,時間不夠難道是別人的問題嗎?時間都是自己擠出來的,爲什麼別人可以提前一個小時寫完作業,但我只能掐點呢?自己的問題,好好反思,抓緊時間!

今天沒有考試(L說國慶有的是時間考)
那麼任務安排如下:
8:30~9:30 憤怒的小鳥[√]9:25

哇……昨天都想到那個份上了都沒有推dp
今天曉得是dp後,就隨便亂推啊,然後就被卡精度,調了調就A了

什麼鬼啊,那麼水的題。。。很簡單的一個線性dp,居然都不會應用!
不過好歹還是自己推的,鼓掌

9:30~9:35 休息[√]9:30
9:35~12:00 2018/6/26考試題
SOJ 2172 [√] 10:10 簡單的線性dp,從後往前推
SOJ 2173 [×] 11:30 做不來了,蛇皮走法不知道怎麼分析

由於每個格子只能走一次並且不能不走,所以最後的走法其實是固定的
在這裏插入圖片描述
大概長這樣。
這樣的話我們就可以固定右邊,枚舉中間,推出左邊
hash可過,什麼神仙基礎題
原來還有hash表這個玩意兒
其實和鏈表的思路一樣

11:30~12:00 HDU3986 思考
滾去複習了一發黑暗城堡,,,沒做出來(daddy說的太有道理了)

下午圖論專場
2:30~3:00 黑暗城堡
果然還是太菜了。

黑暗城堡:首先找出最短生成樹,然後看每一個點有多少種情況可以被到達(也就是說對於點p,有多少個點x滿足dis[p]=dis[x]+w[p][x]dis[p]=dis[x]+w[p][x])最後把所有點的可能情況乘起來就是答案了。

3:00~4:00 國王的遊戲
tyz讓我幫看一下。
由於以前做過就看了一下,結果hhhh
推了好久……
鄰項交換證明貪心,你值得擁有

4:00~5:00 HDU 3986+HDU 4370
HDU 3986
什麼垃圾題,複雜度顯然不對。
害得我想了好久,結果一翻題解……就是枚舉嘛。。。垃圾題

2019/9/29

16:00~17:20 HDU 4370 [√]16:55
哇塞,好題
這個轉化我給滿分,對題目進行深入分析後發現其實就是求從1到n的最短路。
Xij=1Xij=1看做iijj有一條路徑
Xij=0Xij=0看做iijj沒有路徑
那麼對於題目條件

  1. X12+X13+...X1n=1X12+X13+...X1n=1
    轉化一下就是說:保證1這個點有一條出邊(這一條邊不能連向自己)
  2. X1n+X2n+...Xn1n=1X1n+X2n+...Xn-1n=1
    轉化一下就是說:保證n這個點有一條入邊(這一條邊不能來自自己)
    3.for each i(1<i<n)i(1<i<n), satisfies Xki(1<=k<=n)=Xij(1<=j<=n).∑Xki (1<=k<=n)=∑Xij (1<=j<=n).
    轉化一下就是說:保證中間所有點的入度等於出度

然後最短路就很顯然了

可你以爲這樣就完了嗎?
不,too young too simple
還存在一種情況:就是有兩個環,一個是起點到起點,一個是終點到終點
判斷一下取最小值即可

2019/10/2

8:20~12:00 考試
T1 CF65A 100pts(防爆零)
T2 CF715E 20pts
T3 CF65D 40pts
Total 160pts

最高220pts
被高一吊打,太丟人了
身敗名裂
算了算了,自己加油加油吧(ง •_•)ง

14:00~14:30 瞎磨嘰不知道在幹什麼
14:30~15:30 聽評講
15:30~15:55 調T3(記得清空)
T3 暴搜+記憶化
記憶化–>如果當前這種計數器順序出現過,由於計數器的和表示了當前在第幾位,那麼這種情況就是計算過的了
15:55~16:05 休息 (o゜▽゜)o☆
16:05~16:22 給三樓講T3(這有什麼好講的嗎……)

T2 轉圖論+組合數學
仲爺說是什麼“置換羣”,超級基礎
然後和wlf討論了40多分鐘,還是沒有理清楚(抓狂,先放一下吧)

2019/10/03

8:00~11:30 考試
T1 SPJ 1937 20pts
T2 SPJ 1938 0
T3 SPJ 1939 30pts
Total 50pts

考場時間浪費太多
一開始半個小時,dev炸掉,換了臺機子
先開T3,完全沒想過折半。學習了2^16這種範圍倒大不大,折半處理就很友好了
然後也沒想過分塊
自己用trie樹,就不應該建完16個。
wjs直接根據具體長度操作(從低位處理)就trie樹搞A了

emm……事實上,完全看臉A的啊!!!!
交到OJ上還是T。這個0.9我只服wjs。。。。
在這裏插入圖片描述

T1沒想過dp……打表找了個規律,然後一開始也根據規律寫了一個方程
後面發現這個方程不能囊括所有情況
然後由於時間不夠又太依賴打表沒有動腦去思考方程實際意義,就交了一個暴力上去
考後發現大部分人都推出來了方程,我……

T2沒時間了。T3想了太久。

綜上所述:沒把握好時間,沒動腦筋。。明天考試一定要吸取經驗,多動腦多思考!!

開始調題!
T1可以思考出來方程的
T2水題……居然都沒時間開
T3好妙啊(!!hxy太強啦!!)
試想,如果我們定義a[x]a[x]表示x以及它所有子集的個數,那麼查詢的時候就是O(1)的。但是每次加入和刪除就是216
如果定義a[x]a[x]表示x出現的個數,那麼加入和刪除是O(1)但每次查詢是216
這樣看來走哪邊都行不通了
既然如此,我們就折中一下
定義a[x][y]a[x][y]表示x確定(前八位)y以及它的子集(後八位)的個數
那麼查詢的時候,只用枚舉前八位,28
加入和刪除的時候就是枚舉後八位,28
所以總的複雜度就是O(n*28

16:35 完成今天考試題【✓】

HDU6166(由於HDU系統維修中,所以還沒寫)

基礎版的Dijkstra是單源多匯的,但是本題是多源多匯,但是Dij他是單源的……等等。。。Dij也可以多源呀,只要開一個超源0,用長度爲0的邊連接到各個起點,在把每個終點用長度爲0的邊連接到超匯n+1,這樣0 - n+1的最短路就是從所有的起點到所有的終點路徑中最短的。那麼我們要想辦法把真正最短答案的起點 分到起點集合中,把真正的最優終點放到終點集合,其他的隨便放哪裏都行。emmmm隨機化算法隨機分組。。。期望做4次可以得到正確答案。。。。

官解:按照點的標號的每個二進制位分組,最多分20次(準確的說是17次)。每次會把某一位不同的點分開到起點和終點集,然後再起點終點互換,再做一次。

正確性在於:對於任意兩個點u和v,u和v是不同的點,必然有至少一個位不同,因此至少有一次他們被分到了各自正確的集合中,得到了正確答案,其他的答案都比他要大。

20191004

今天不考試
自己狂刷題

8:00~8:30 外網炸掉,機房鬨鬧;高一同在,人聲鼎沸……
8:30~10:30 原題(20180629)
10:30~10:40 休息
10:40~12:00 圖論專題(新題)

我還是tcl
現在11:30 我纔剛剛把三道考試題看懂(這還是以前做過的啊,雖然翻了一下博客發現以前只寫了T2,可我就連T2也沒想到正解。天啦,重做以前的題纔會發現自己掌握的到底是個什麼狗屎o((⊙﹏⊙))o.)
不過這些方法真的都好棒(๑•̀ㅂ•́)و✧

總結一下:
T1 SPJ2032 大體方向正確(和20191003的T2有異曲同工之妙)
維護一個前綴值,掃一遍,如果遇到 x 就加一,遇到 y 就減一,然後看前面有多少個前綴值跟當前的值相同,加進答案裏。
這樣做的缺點在於每次都要重新 O(n)地掃一遍,但是其中有很多位置是沒有用的,所以我們可以把 x 的所有出現位置和 y 的所有出現位置拿出來,排序之後從前往後掃,做法與前面的暴力類似,但是壓縮了中間沒有影響的位置。(兩次出現x的中間部分的答案是可以O(1)算出)
由於這樣做相當於將所有顏色不同的位置對都枚舉了一遍,所以這樣的複雜度是 O(n^2)的。

T2 SPJ2033 性質想到了,不會維護
和當年一樣,一眼性質
然後
仍然和當年一樣,不會維護(明明應該掌握的!)
有刪除操作,求序列第k大
二分+樹狀數組 或者 權值線段樹 也可以

T3 SPJ2034 完全沒思路
當年肯定看到題解是分治+dp後,就棄療了
不過現在重新來看,也不是那麼難的事兒
(還有啊,這樣選或者不選的情況,一般好像都和dp有點關係)

T4 SPJ2035

14:00~14:30 弄生物資料+電腦死機
14:30~15:30 調上午兩道題T1 & T3
15:30~15:40 休息
15:40~17:00 圖論專題

我還是tcl
現在16:30 我纔剛剛把T1調出來。。。被上午看到的那篇題解洗腦了(那篇題解後來找不到了,但是真的賊拉麻煩)後來重新改了一下。不能被題解限制住思維!離散化的話,要在去重後的序列裏lower_bound,否則就會RE


2019/10/05

8:00~8:30 我就搞不懂了,來那麼早幹什麼……
8:30~12:00 考試
T1 WOJ 4731 100pts
T2 WOJ 4732 0
T3 WOJ 4733 0
Total 100pts

T1 dp+後綴max優化
T2 棄×(仲爺都只能口胡,我還是不要自己找事兒玩了)
T3 二分+網絡流
“最大的最小” 想到了二分
根據此題的性質 想到了網絡流
但是也不知道爲什麼腦袋缺根筋
就沒有把兩者聯繫到一起
聯繫到一起後就分分鐘啦

事實上做了一下後,也沒有說得那麼簡單
是從貓向關係建邊(不是拆點)
因爲關係最多被訪問一次嘛

16:00~16:23 昨天的T3,果然要在腦袋清醒的時候想
16:25~17:00 Right Build Gym - 101149L

超級經典的說
只想到了1/3(也就是D[i])
我們首先跑一遍從0開始的單源最短路,設定爲D【i】;
然後反向建圖:
①跑一遍從a開始的單源最短路,設定爲F【i】;
②跑一遍從b開始的單源最短路,設定爲L【i】;
然後我們枚舉一個重複路徑點,使得同時維護D【i】+F【i】+L【i】的最小值即可。


2019/10/06

SCU 4444 Travel

8:00~9:00 CF 400d   9:07[√]
瞎搞居然A了……時限也太鬆了
500次最短路+小優化
(以前做過【但是不出所料地忘記了】)

正解:
如果當前路徑邊權x爲0,就將兩個序號的細菌連接連接(並查集),然後在判斷是否正確的時候,只要同一種細菌處於同一集合即可。然後處理最短路徑就用Floyd算法。

9:00~10:00 CF 667d 10:24[√]

想題的過程中又坐不住了……東搞一下西搞一下
“娃呀,你能不能乖乖聽話?
喊你想題的時候就莫要東扯西扯
一會兒喫水果,一會兒瀏覽網頁……
氣死人了啊!”
“遵命∠(°ゝ°)”

(這個暴力優化我覺得很有用)
直接枚舉四個點,顯然不可過
考慮枚舉前三個點,那麼第四個點一定是第三個點的異於前兩個點的最遠點。這樣我們就把複雜度降到了n3
再思考如果我們只枚舉前兩個點,第三個點是第二個點的最遠點,那麼第四個點是第三個點的最遠點,此時不一定就是最優解,因爲第三個點會對第四個點產生影響。
然後發現第一個點其實和第四個點本質一樣

最後我們就只用枚舉中間兩個點,第一個和第四個之前預處理出來

(由於邊權都爲1,我們直接bfs找最短路即可)

10:10 ~11:10 CF 507E 11:35[√]
所以動動腦筋還是有好處的(主要是水題,寫來找信心(*^▽^*))

11:10~12:10 SCU 4444 Travel 11:56[√]
(最近怎麼各大網站都在維修???思想明白還沒寫)
具有一定性質的完全圖求最短路
根據邊權分類討論即可

現在有一點慌。
10/18初賽
10/14、15月考

得抽時間複習初賽
(初賽更重要。文化課……隨緣。
抓緊在學校的時間。週五週六就都搞競賽)

慌也莫得用啊┓( ´○` )┏

下午
14:00~14:30 剛剛睡醒的xly總是神志不清……
14:30~16:30 2018/7/8考試題 16:10[√](都沒有代碼實現)
T1 WOJ4589
時間沒卡過去
二分check的時候做複雜了
根據單調性可以優化到O(n)

T2 WOJ4590
毒瘤……完全不知道怎麼下手
思維揹包

在思考的過程中有那麼一會兒是在往正解的方向靠
但是沒有深入想下去了(what a pity!)

T3 WOJ4591
打表+線段樹
所有的事情和打表聯繫在一起後,就變成小學生找規律了:)

總結:不會的還是不會……長記性啊哥們兒

16:30~17:00 WOJ#1609(據說用來換腦袋的) 16:45[√]
刷刷水題 找自信❥

最短路就可以先放一下了。新的任務:最小生成樹

2019/10/07

看吧……誰讓你盲目自信。

8:30~12:00 考試
T1 WOJ 4740 20pts
T2 WOJ 4741 0
T3 WOJ 4742 40pts
Total 60pts
最高210

這個差距
姑娘啊,只有39天了。
不多說
寫題

T1 WOJ 4740
妙啊。
異或和
【血的教訓:請開始使用超級讀優……】

T2

T3 線段樹


2019/10/16

昨天寫的忘記保存了……csdn什麼時候取消了它的自動保存功能

當天有考試,晚上三道聯賽真題;沒有考試,複習以前的考試題+專題訓練

7:30~8:20 NOIP2015 飛揚的小鳥
好題啊……細節賊啦多
昨天晚上翻了題解發現是dp後
回家敲了個n*m2 (75分)
考慮如何優化:
f[i][j]=min(f[i1][j+down[i1]],f[i1][jkup[i1]]+k)f[i][j]=min(f[i-1][j+down[i-1]],f[i-1][j-k*up[i-1]]+k)
問題就在k的枚舉上

發現如果只考慮上升f[i][jup[i1]]=min(f[i][jup[i1](k1)up[i1]]+k1)f[i][j-up[i-1]]=min(f[i][j-up[i-1]-(k-1)*up[i-1]]+k-1)
然後就會發現dp的優化好像都是從上一個階段直接挪過來

這樣做完後以爲分分鐘就能A
結果各種細節掛

  1. 最後比較最小值的過程,用<inf 如果是!=inf的話有可能比inf大
  2. 由於只考慮上升,需要調用j-up[i-1]的信息。哪怕j-up[i-1]本身這個位置不合法,但是它轉移到的j是可能合法的。所以我們先從1~m都做一遍。最後再考慮下降和不合法情況的剔除

今天沒有考試,上午先做專題訓練吧
8:30~10:10
POJ 1639 最小度限制生成樹
將1號點分離出來,求出剩下部分的最小生成森林
然後在每一個連通塊(總數爲tot)中選擇一個點u,使w(1,u)最小
這樣就得到了一顆1號節點度數tot的最小生成樹
然後我們還可以選擇S-tot次,進行“鬆弛”更新答案
選擇不在當前生成樹上的點x
找到1~x這條路徑上的邊權最大值

10:20~11:10
POJ 2728 最優比率生成樹
本來只是一道0/1規劃的板題
結果因爲稠密圖用了kruskal而瘋狂TLE
看來Prim還是有點用

11:10 ~12:10
BZOJ 3058四葉草魔杖
雖然知道了標籤“最小生成樹+狀壓dp”
但是依舊不知道怎麼下手

學習一波題解後
有了那麼一點點感覺:

看最終答案的組成,一定是許多個連通塊(每個塊內寶石能量之和爲0)的代價和(因爲這些塊之間如果還要連邊則肯定不優)
那麼我們就枚舉是哪些點在一個連通塊
如何計算同一塊內的答案呢?
顯然是最小生成樹(因爲在這個塊裏每個點都必須能被達到,又要代價和最小。)
最後亂湊(把各部分答案來拼接)
(這樣的複雜度顯然不太對216*216,所以稍微剪個枝)
(求最小生成樹的時候判斷選擇的邊的條數==節點個數-1,在外面判斷。避免一個點的情況)

14:00~15:00 BZOJ四葉草魔杖
15:00~16:00 POJ 2349 Arctic Network
本來以爲也是一道水題……
結果還是有很多細節要注意

  1. 這道題最大的問題就是對題目的理解:有m個衛星基站,最多可以減少m-1條邊的使用(一定會構成環,避開較大的邊)
  2. POJ上double輸出用%f

16:00~17:00 2018/7/10考試題
emm……只有第一題略微有些想法,第二題推了半天也沒有思路

17:00~18:00 打球+喫飯
18:00~19:20 複習初賽
19:20~20:00 咳咳……摸魚
20:00~22:00 複習初賽

不過只有三十天了,不要摸魚……
每天要把計劃執行好!別讓自己失望
昨天晚上由於身體不適,可以原諒
今天就不行了!

遺留問題:1.最短路的練習題 2.考試題

2019/10/17

計劃
上午考試
下午調題(三道需調完)
中午晚上覆習初賽

上午考試:
T1 補票 100pts
T2 刪數字 70pts
T3 滑冰 70pts
Total:240pts

最高分:300分
(差距……)

T1 防爆0
T2 dp+優化
呀呀呀,好開心,自己也能推出dp方程(emm……是不是追求有點低了)
但是並沒有想到如何去優化!!lsr神仙tql!!
思考f[i]f[i]需要用f[j]f[j]來更新,需要滿足的條件:

  1. i>ji>j
  2. a[i]>a[j]a[i]>a[j]
  3. a[i]a[j]<=ija[i]-a[j]<=i-j

如果按照平時那樣枚舉下標則一定會滿足條件1 (然後我也就直接忽略了這個條件)但在這樣的情況下同時滿足2、3並且要在logn時間內求出就顯得很困難了
仔細分析後就會發現,如果2、3條件滿足了1就一定滿足。所以1相當於是一個廢的條件。
將3變形後
ja[j]<=ia[i]j-a[j]<=i-a[i]就可以直接按a排序後用樹狀數組搞啦

但實際操作的時候還是有一些問題:(並沒有理解透徹)
1.對於排完序後的序列,由於我們有相同的數,所以不滿足嚴格單調。需要先把相同的這一段處理完,然後統一加進去(直接用vector做)
2.樹狀數組的下標從1開始。而這裏0的信息對於我們而言是有用的,所以加數的時候需要加1

T3 優化建邊+最短路
n2建邊的弊端就在於會連接很多無用的邊
而後面你也分析出來了只要相鄰兩個連就夠了,只是沒有再往回去想了

總結:
1.做題的時候可能一邊想一邊得出新的結論,要記得用這些結論試着優化之前的做法
2.dp還是沒有很明白這個轉移的實質,導致條件的缺失

14:30 行了行了,改完了改完了
14:30~15:00 並沒有認真聽評講
15:00~16:40 昨天考試題

  1. T1很NOIPCSPDay1T1就是那種推推結論,O(n)秒過那種。但是我又弄複雜了,想了個線段樹?不是很清楚這種題該怎麼做,多推推也許會好一點

2019/10/19

我想通過量變來逼迫自己

下午+晚上
1.dp專題訓練 5道
2.以前的考試題4道

dp
1.WOJ#3884 烽火傳遞

  • 考慮哪些信息對我們有用
  • f[i]–>第 i 位發出信號,且前面都滿足要求的最小代價
    f[i]=minf[j]+a[i](im<=j<i)f[i]=min{f[j]}+a[i] (i-m<=j<i)

2.WOJ#3885 綠色通道

  • 儘管題目描述比較複雜,但稍微轉換一下。就是和上面一樣的了。我們也只需要關注哪些信息對我們有用
  • f[i]–>第i道題要抄,且前面都滿足要求的最小代價
    f[i]=minf[j]+t[i](imid1<=j<i)f[i]=min{f[j]}+t[i] (i-mid-1<=j<i)(mid 二分)

3.WOJ#3873 分離與合體

  • 區間dp入門。(好吧,其實都沒感覺出來這是dp。用記憶化搜索好理解)
  • 注意對題目的理解
  • f[i][j]劃分i~j這個區間可獲得的總價值
    f[i][j]=max(f[i][k]+f[k+1][j]+a[k](a[i]+a[j]))f[i][j]=max(f[i][k]+f[k+1][j]+a[k]*(a[i]+a[j]))
2019/10/20

週末算是好好休息了一把(泡溫泉的幸福時光)
初賽結束了
剩下的不到30天,便是最後的衝刺
這個週末的休息便是爲了剩下日子而養精蓄銳
Are you ready,my girl!

17:00~23:00 學習時間
任務:
1.安排下週的學習計劃 \/
2.總結圖論
3.初賽最後一題(×)明天問一下hxy


4.WOJ#1887 加分二叉樹

  • 和上一道題簡直一模一樣啊(難道區間dp都是這樣玩的嗎,cool!)
  • 注意對題目的理解
  • f[i][j]以i~j爲中序遍歷的最高加分
    f[i][j]=max(f[i][k1]f[k+1][j]+a[k]))f[i][j]=max(f[i][k-1]*f[k+1][j]+a[k]))
2019/10/21

1.圖論的總結
2.區間dp和樹形dp
3.斜率優化dp

7:30~8:30 升旗+初賽最後一道題(狀壓dp)
保存走i步後的必勝或必敗狀態
由於是從1依次枚舉到m的。所以轉移的時候
status=status<<1winstatus=status<<1^win

8:30 ~ 9:30 WOJ#2755 手機號碼
敢於定義狀態。狀態可能會比較複雜(要有耐心地去梳理,看需要哪些,然後就根據需要定義)
f[i][k1][k2][0/1][0/1][0/1][0/1]f[i][k1][k2][0/1][0/1][0/1][0/1]表示第i-1位爲k1,第i-2位爲k2,是否出現4,是否出現8,是否有連續的3位數出現,是否達到上限

9:30~10:30 WOJ#1198 數數
分塊+打表(感覺騙分很有用)
壓位統計答案<–這個方法超級棒(類似揹包的思想)

10:30~10:40 休息
10:40~11:40 WOJ#1120 數字計數 11:53
┭┮﹏┭┮終於調出來了(雖然以前做過,但現在自己沒看題解寫出來,還是很不錯啦【是不是要求又有點低了/笑】)
枚舉每一種數字出現的次數cnt,然後dp統計出現次數恰好爲cnt的數的個數
注意前導0的情況(打標記)

11:40~12:40 POJ#3208 啓示錄 12:00~12:40
腦子一熱,寫了個二分
本來以爲卡卡能過
結果還是太naive了

12:40~13:00 喫飯飯
13:00~14:00 睡覺覺
(總結:這是(* ̄(oo) ̄)的生活吧)

14:00~14:40 POJ#3208 啓示錄
學習正解
先dp預處理出,i位數爲魔鬼數的方案數
然後求出第x小的魔鬼數的位數
最後試填法確定答案
dp預處理:
定義f[i][k]f[i][k]表示i位數,開頭有連續k個數爲6的方案數
f[i][3]=f[i1][3]10+f[i1][2]f[i][3]=f[i-1][3]*10+f[i-1][2]
f[i][2]=f[i][1]f[i][1]=f[i][0]f[i][2]=f[i][1] f[i][1]=f[i][0]
f[i][0]=(f[i][3]+f[i][2]+f[i][1])9f[i][0]=(f[i][3]+f[i][2]+f[i][1])*9

14:45~15:30 BZOJ#1799 月之謎 15:13
哇……一度非常接近正解,發現了各位數字之和比較小的特點
但是!沒有想到可以枚舉(我懷疑是思考時間不夠。直接翻題解去了,今天上午同樣的枚舉不是都想出來了嗎?多思考比什麼都重要)
然後這道題以前做過(事實證明,是否爲原題並不影響做的效果【反正都不會】)
重新回顧一下思路,就不敲代碼了
那個取模運算記住就好啦
(mod*10+x)%MOD;

15:30~15:35 休息
15:35~16:30 WOJ#3880 塗抹果醬 16:16
太瓜了……
合法的方案居然只有48種
我……就卡在這個規模上,覺得242種鐵定超時
哪知道實際有效的只有48種啊,我哭了【嚶嚶怪上線】
然後就可以隨便亂搞了啊(這道題提醒我們,當題目有限制時,合法的情況可能遠遠不如總數。應該手寫程序算一下。)

get到一個比較好的取出三進制的第pos位的方法
x%3pos+1/3posx\%3^{pos+1}/3^{pos}

16:30~17:20 WOJ#4155 奇怪的道路 17:08
理解了CSP-S初賽的最後一道題後,重新看這道題又有了新的收穫
此所謂“溫故而知新也”,就是這個意思吧.
一般定義狀態都會有階段,而階段往往比較好確定
比如這裏就是第幾個節點,第幾條邊
而對於限制1<=uv<=K1 <=|u - v| <= K
這就告訴我們對於第i個節點,實際有用的只有i前面K個點的信息,K<=8我們壓位走一波
if((k&1)==0&&(f[i][j][k][K]))f[i+1][j][k>>1][0]=f[i][j][k][K];if((k\&1)==0\&\&(f[i][j][k][K])) f[i+1][j][k>>1][0]=f[i][j][k][K];
這個轉移就很妙了。不用的信息就直接>>1解決了

17:08~18:36 休息

18:36~19:05 2018/07/10 T3
當年都是些什麼神仙題
get一個技巧:
如果要求x<=i,y<=jx<=i,y<=j的互質二元組個數
利用矩陣前綴和(二維前綴和)的思想即可

19:05~20:00 2018/07/12搶匪的財寶
簡單dp
如此水的一道題……我居然還打掛了
注意(1,1)這個點
(樣例恰好爲0,坑人一把好手)

20:00~20:30 2018/07/12 二次元冒險思考
yy了一個建圖跑最短路的做法,不知道可不可行

20:30~20:50 休息+隨筆雜記

20:50~21:15二次元冒險
直接bfs??這喵喵不是在逗我嗎

21:15~21:45 2018/07/16
T1 打表找規律+Bitset
哇……是真的菜
打了個表,也沒看出個所以然(你難道沒發現相鄰兩數之差爲4的倍數嗎)
結論就是找滿足4k+1的質數個數(當然也是可以證明的。奇數平方加偶數平方)
然後由於數據範圍足夠大,要用bitset來存一下

順便區分了一下歐拉篩和線性篩
線性篩:每個合數都只會被其最小質因數篩去(近似O(n))
歐拉篩:只要是質數就會篩去其倍數(nlogn)
雖然時間上線性篩更優一些,但歐拉篩更省空間
所以這道題用歐拉篩更好(並且在篩的過程中可以根據4k+1的性質優化)

晚上了[呵欠]
來一發總結,然後睡覺走人
計劃略微有些不合理。
本來上午計劃的是數位dp+斜率優化dp
但實際上只完成了數位dp
下午的狀壓dp感覺還行
晚上計劃完成兩套模擬題,實際也不合適
還是改爲一套吧(從後面往前面刷)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章