1. 程式人生 > >11.1【noip模擬考試】總結——眾人AK,唯我爆零

11.1【noip模擬考試】總結——眾人AK,唯我爆零

縮小 sig 一位 數據 star 二進制 個數 and 但是

技術分享

(上不了p站我要死了)

今天的考試其實題本身還是挺好的,但是無奈自己太挫了,考試的時候第一題一直本機CE,第二題樣例解釋有誤一直以為自己讀錯題了,簡直心態爆炸

題目總結

因為出題人不是毒瘤扒題人,所以就不放題面了

T1

給出n個數,要求轉化為羅馬數字。

雖然題面上的描述鬼裏鬼怪的,甚至有漏洞。但是卻有一句“等同於阿拉伯數字每位分別表示”,這不是很明顯的提示嘛?!

所以把每一位數的表示方法打個表出來,直接輸出即可。

但是CE了我好久,一直不知道為什麽。不是很懂字符串的賦值。

T2

給一個字符矩陣,從(0,0)點出發,每次只能向下或向右走。求經過字符組成的字符串中第k小的字符。k<=1e18

本來第k大是想到Astar算法的,但是發現k的範圍太大啦。就想到應該是縮減範圍什麽的,於是就發現可以用“值域線段樹求第k大”一類的思想。

因為對於每一個點,我們可以求出之後路徑數。如果用bfs來寫的話,就相當於剪枝了。

但是實際上搜索會多出很多相同的點,卻占用了多個空間。所以把相同的點合並即可。

T3

從平面上(0,0)到(n,m)。可以從(x,y)到(kx,y)或(x,ky)。其中kx與ky滿足kx and x=x,ky and y=y。有q個點不能經過。

首先發現,如果沒有限制,在二進制下(101,110)與(110,011)是相同的,所以問題轉化為二進制下1的個數,這樣數據範圍就縮小了很多了。可以用dp直接處理出沒有限制條件的答案。

考慮減掉經過限制點方案數。仍然可以考慮遞推(dp)。設f[i]為以i號點結束的合法方案數,那麽f[i]可以用 沒有限制的方案數-sigma(以每個限制點作為路徑經過的最後不合法點的方案數)。

(就不講太清楚了)

學習總結

昨天說要下午調完題,結果又沒有調完,拖到了晚上。(還好代碼不算毒瘤)

原因有兩點:

1、還是有畏難心理,面對感覺難的題總是要磨蹭一陣子才敢動手

2、代碼思考不是特別清楚,導致寫代碼的時候還要思考,改來改去的,降低了速度

增加勇氣!

制定較為清晰的計劃,提高效率!

11.1【noip模擬考試】總結——眾人AK,唯我爆零