一道數論題,為了求穩,先寫了乙個o(n^2)的暴力,然後推了5分鐘的o(n)演算法,空間複雜度也是n (n為較小數)(其實我的方法再推下去一步就可以到結論,但是對拍bat寫了太久了,將近半個小時 最後沒時間來推這題了)
大致的思路如下:
對於一組數a>b,對於乙個數字x=na+mb,若n,m均為自然數,則x為符合條件的數字。
但是這裡我們先允許n,m為負整數。那麼我們可以得到x-an≡0(模b意義下)。
顯然,對於所有模b相同的數,他們所得到的n都是相等的。
那麼對於每乙個模數 k(0<=k<=b-1),他所對應的最大的不能組合的數字就是大於an的模b為k的最小整數。也就是an-b。
考試的時候我想到這就停了,打算先做t2t3再回頭推這題,因為我當時認為t2是道很水的模擬(逃),然後就放在那邊拍寫t2了。
但是考完再回去看這個推導,其實再往下去一步就可以到正確答案了。
如果我們把0在模運算下每次加上(a mod b)然後的數a和步數b就分別對應乙個k和n。
如果沒聽說過乙個定理(這個定理很好證,自己在做數論的題的時候可能都思考過類似的問題)的話,我們可以用數學歸納法證明出我們會在b-1步裡到達所有的k(0除外),他們的步數分別為1到b-1。
而對應的每乙個步數n,對應的最大不能組成的數為an-b,n的最大值為b-1那麼這道題的答案就是a(b-1)-b也就是ab-a-b
(ps:這個血腥的案例告訴我們一定要相信對拍報平安!一定要背對拍bat!!不然下次就不是40分的事情了orz)
這道題是一道模擬題,只要用棧維護一下,考慮各個情況即可ac
至於我為什麼80分…..讓我再看看orz= =
//更新於2017.11.29晚9點
這道題又給人乙個慘痛的教訓:要好好利用大樣例,由於特殊原因,大資料裡面前後都為n的點對答案不影響,然後我也沒仔細看過掉的資料,加了乙個判斷就a了…..
由於在bat和t2上花費的時間,到這裡的時候我只剩30分鐘了(心中默念gg),但還是花了一會打了乙個暴搜的程式,期望是10~20分,然而一分都沒有。
這道題的思路還是很好想的,我想的是用dfs做,把一組能到達的乳酪之間連一條邊。從和下面連著的點開始dfs,記憶化即可。但是這道題的資料範圍比較大,用long long計算的時候會炸,需要加個特判(或者用ull),就是x、y、z之間的距離大於2r,那麼就直接不連邊,不然會爆long long(應該是這樣,因為考完我看我的特判好像炸了,民間資料a了然而官方80分)
這道題一看到就知道用狀態壓縮(可是我不會),於是我考慮了最小生成樹上找(大致應該是這個思路),然後我發現我不會打最小生成樹了 於是我考慮暴力40分,所有的v相等的情況下用bfs直接取邊就可以拿到這40分,剩下的60分我想用bfs騙一下分,民間資料騙到分了。
標解果然狀壓,o(n^4)(n<=20)玄學時間複雜度,如果會狀壓的話這題也不是特別難了,畢竟狀壓剛剛加入考點。
是時候練一波狀壓了。
這道題暴力分給的是很足的,一開始空間複雜度o(n^2)的30分和中間所有x=1的30分都是比較好拿的,這道題我zz的犯了乙個巨無霸錯誤,寫了乙個x=1的特判,本來應該是判斷!=1的時候標記,把1寫成了0。我還特意注釋了不要忘了改,gg。
這60分暴力都還是可以搞的
標解是線段樹/樹狀陣列。
/ 題解
總而言之,今天第二次參加複賽,經驗不是很足,犯了許多不應該的錯誤,這樣難度的題目本來應該拿足暴力分的,再怎麼說對我說100+100+10+100+40+60還是可拿的,但是最後卻少了100多分,爭取明年能拿到理想的成績吧!
2017Noip普及組遊記
day0 一天都基本在休息,早上信心賽,大家都是400整。下午一群人窩在教室裡打三國殺。day1 before contest 早上大約十點到了試場,在考提高組,不能進。喝了一杯咖啡去除早起的身心疲倦。感覺較好。day1 during contest 前三題對於自己來說較水,一小時做完,一直在打最後...
2017NOIP普及組 賽前心得
經過了一年多的學習乙個對c 思想一竅不通的 菜鳥 終於變成了乙個對程式設計有大致體會的 鳥人 明天 寫部落格時11月10日,noip普及組複賽11月11日 雙十一 就將迎來第一次對自己所學知識的大型檢測了。真心緊張 回想起前幾次的模擬考,我不禁痛心疾首。hello,world.下面,就讓我來分析分析...
2017noip模擬賽T2 attack 題解
將病毒按攻擊力從小到大排序,網線也從小到大排序,乙個病毒能入侵的網路比它強的病毒也能入侵,如果病毒攻擊力遞增,下乙個病毒可入侵網路在此基礎上擴充套件即可,每個節點只擴充套件一次,不會撤銷,每次將病毒可入侵的邊加入,用並查集維護連通塊 利潤和,最高重要度及其個數,並統計這次入侵的連通塊,注意判重。然後...