背景
弱省小白至強省名校集訓,心得頗多
心得
學習划水一年,連模板都別不全的小白到某市某中學參加考前集訓。
之前在自己的學校裡都是各種考試韌性測試,各種考試爆零。一心只求正解,殊不知出題人心險惡。
而某校則不同。他們的題目大都一套一套做,並且考試時既有簽到題,也有玄學題。上午考完試後,會發出天書題解,並會在講題前留有時間自己分析。在講題時,都是些oi大佬,每個人都會有一套自己的講題方法。
廢話不多說
在集訓那些天,本人倒是補上了之前部分記不到的模板。在講一道簽到題求逆元時,詳解了三種求逆元的方法:
?:費馬小定理:ap−
2=a−
1(%p
)a^=a^ ~(\%p)~
ap−2=a
−1(%
p)?:線性求逆元:inv
i=(p
−p/i
)∗in
vp%i
%p
inv_i=(p-p/_i)*inv_\%p
invi=
(p−p
/i)
∗inv
p%i
%p?:拓展歐幾里得: 一大玄學演算法,以類似與求模方程的解法求逆元…… 費馬小定理適用於單個數求逆元,線性求逆元法適用於某區間內所有數的逆元,拓歐的話隨緣強者專屬
除此之外,就是區間類問題:
?:只維護不修改,o(1)演算法st最快
?:只求和且修改,樹狀陣列常數優
?:既求最值由算和,用線段樹最自由
此外,st錶用的時2進製思想,通過log2來劃分區間;樹狀陣列無法維護就最大值,借助計算機補碼來縮小常數;線段樹是騙分最常使用的資料結構。
?:矩陣優化:通過建立轉移矩陣,利用快速冪演算法,把線性做法的時間複雜度降到log級別
以上種種,很少出現在正解之中
這不是廢話
這次外出考前集訓,學習到的知識點其實很少某蒜客上都講過。這次學到的大都是部分分的拿法以及考試的策略問題。
—————————暴力是正解之母,騙分是省一之師—————————
暴力的優化往往可以拿到很高的分數。在之前本人只想正解
以上演算法常用於騙分:
1.去他的組合數計算,線性求階乘後逆元乘法取模,把帕斯卡·盧卡斯完全拋之腦後。當然,本人記不到他們的**
2.忘記繁瑣的區間模擬 逆序對,樹狀陣列**短[與線段樹相比],好理解[相比於st表],充分呼叫了計算機底層運算,不要大常數,不要o(n
2n^2
n2),只要o(nlo
gn
nlogn
nlog
n),你值得擁有。
3.樸素動態規劃或暴力遞迴,複雜度我確不敢恭維。線性演算法要超時?矩陣優化來幫你。集訓前本人對矩陣不是一竅不通的。推出轉移矩陣,寫乙個矩陣乘法函式本人不會寫類,懶得過載運算子+快速冪,沒有ac也有80.
4.記憶體超限惹不起,滾動陣列造奇蹟。在st表或求大數斐波那契時,本地dev不會報mle,一提交就可能超限。化二位為一維,化一維為個體。
優化操作,滾動最秀;記憶體超限,降維千古
//斐波那契滾動
int a=1,b=1,c;
for(int i=3;i<=n;i++)
cout<5.打表是一門技術,有時也需要靠運氣。
注意事項
1.bug!!!如果你寫完**跑樣例的時候攤上bug,那你多半gg了。寫**之前一定要看清題目,寫的時候也要謹慎。重慶好啊,windows系統可以用devcpp除錯。
2.十年競賽一場空,沒寫long long見祖宗!不要讓long long阻礙你的夢想,不要為re讓你止步不前。
3.ac還是gg,freopen很關鍵!在考試時應反覆檢查自己的檔案讀取,提交時不要在freopen前留下// [尤其時很多用慣了oj評測的同學,需要尤為注意]
4.陣列大小要合適。開小了,ac前加p;開大了,你只剩mle。
人生沒有最短路,你我就是連通圖,今天你ac,弗驕,弗傲,明日…………
2018NOIP提高組 貨幣系統(完全揹包)
貨幣系統 在的國度中共有 n 種不同面額的貨幣,第 i 種貨幣的面額為 a i 你可以假設每一種貨幣都有無窮多張。為了方便,我們把貨幣種數為 n 面額陣列為 a 1.n 的貨幣系統記作 n,a 在乙個完善的貨幣系統中,每乙個非負整數的金額 x 都應該可以被表示出,即對每乙個非負整數 x,都存在 n ...
2018NOIP普及組 划水記
這次noip真的是涼透了。好多可以避免的失分。希望有一等吧。第二天就要考初賽了,但是內心毫無波動。複習是不可能複習的。而且感覺很穩 下午初賽。心態很好。和wyc聊了一下初賽打算靠多少,大概爆0 70吧。反正廣東的分數線從來沒有浙江那麼高。過了就行了。初賽還是很順利的。只不過最後一道題雙向鍊錶花了太多...
2018 NOIP備戰計畫
2018 noip目標 1 刷完紫書數論習題 2 聽51nod講座和習題,根據其知識結構來備戰。3 刷完紫書動規 4 初賽前兩個星期左右開始複習 刷紫書動規的時候感覺偏難,進步緩慢。應該自己調低難度 兩個大任務 1 51nod講座 2 按照 演算法競賽高階指南 中動規的分類來刷 線性動規,狀壓動規,...