ACM訓練日記 4月1日

2021-08-18 01:20:14 字數 1091 閱讀 1177

還是先整理下昨天收穫最多的兩道題吧,因為我太菜,直接讓全隊少a了兩個題。qaq

zoj—3964

題意:給出兩個陣列a和b,a表示每一堆石子的個數,b(當b=0,alice隨便取,當b=1,alice只能取奇數個,當b=2,alice只能取偶數個),兩個人alice和bob,輪流取石子,bob隨便取(至少拿1個)。alice先取。問誰贏。

這是道很明顯的博弈題,首先因為兩人取石子的規則不一樣,所以這道題無法使用sg函式推規律。那麼就來分析

1,bob相對來說擁有主動權(很明顯,不受限)

2,當ai=奇數,bi=2時,alice無法拿走這堆,有這種情況alice必敗。

3,當(bi=2||bi=1)&&ai!=1超過兩堆時,alice必敗。(必有一堆會被bob改變成奇數)。

4,當只有一堆(bi=1||bi=2)&&ai!=1時,alice必須先處理那堆,否則必敗。

5,當bi=1&&ai=1時或bi=0的堆,就是正常的nim博弈。

其實這道題自己證明下第3條中多個bi=1必敗的理論,還有第4條。手動推下就行。

這道題難度並不難,但是在sg函式無法用的情況下確實很難受,不能過分依賴sg函式。明明並不難的題目,我有點鑽牛角尖,認為在bi=2&&ai是奇數情況下可以反逼bob取走這堆,還是我太菜了。。。必須惡補博弈的題目了

zoj—3962

題意:給你十六進製制下  每個數字的價值  問從m開始  顯示n個十六進製制數字需要的價值  定義ffffffff+1=0

這道題網上絕大多數題解都是數字dp。但我的思路不同。

因為只輸入八位數,每一位數出現一次就加一次權值,所以只要模擬兩個數之間每一位數的跳動此數輪迴算出來就可以了。。。。。然而這個演算法要求考慮的情況實在太多,還有精度控制,我調了很長時間,還是輸出不對,還是因為我太菜的原因,有思路卻沒完成出**來,太丟人了。

下面是我翻遍部落格找到和我一模一樣思路的大佬寫的**,簡直把我美哭了,居然這麼短。

來自:const ll mod = 1ll << 32;

int w = ;

ll sum[20];

ll solve(ll x)

return ans;}

接下來一段時間博弈,組合數學,dp,計算幾何基礎。

ACM訓練日記 1月4日

新的一年的第一篇半周總結。昨天剛結束了常微分考試,考的我拔涼拔涼的,常微分老師對我們這一級真的是關照,相比15級的常微分期末題,難度提公升好多。qaq,還是好好準備物理,英語吧。雖然這半周考試有點緊張,但還是有有點收穫的,其實看了一些部落格,關於概率的主要知識點主要就是求期望和概率dp,其他還有結合...

ACM訓練日記 8月4日

今天雖然只a了三個題,但感覺也算是扎扎實實的三道題,分別是數獨,塗顏色,分兩組。數獨這道題很明顯是深搜,9 9的方格填滿數,使得橫排,豎排,和9個3 3的小方塊只有1到9不重複的九個數,該題的關鍵就是做好數字使用過的標記,要做三個vis i j 然後就只需要吧空著的方塊填入判斷填數字,遞迴到填滿為止...

ACM訓練日記 10月4日

今天的比賽發現了許多問題,剛上來lhj順利過了f,我把d題題意讀錯了,匆忙寫了一發結果wa了,後來才發現對坡這個詞理解錯誤,然後就lhj寫e題的搜尋,k題我並沒有讀懂,lwy來了後弄懂了題意。然後lhj在寫了dfs後說題目的樣例錯了,在lwy和他確定了題意以後發現題目讀錯了,又要重寫,我用中間空隙打...