發(fā)布時間:2024-02-26 15:14:58 編輯:小Q來源:網(wǎng)站
USACO競賽怎么備考?競賽分為多個等級,我們?yōu)榇蠹曳治鲆幌裸y級別的題目解析,給大家一些參考,此外,還有不同年級的USACO競賽備考規(guī)劃,歡迎咨詢網(wǎng)站客服了解詳情~
本月比賽出現(xiàn)了兩個變化:
①由于參賽人數(shù)過多,網(wǎng)站在比賽過程中崩潰了。
②在1月賽中,USACO官方提供了中文題面,對年齡段較低的信奧選手非常友好,建議都可以嘗試做一下本次比賽的題目。
有q對(x,y)的輸入,每對表示前1~x個數(shù)右邊第一個比它們大的數(shù)必須在下標為y的位置,這
句話還有一個隱藏含義就是第x+1到第y-1個數(shù)必須比前1~x個數(shù)的最大值要小,即第y個數(shù)
比前y-1個數(shù)都要大(代碼中稱為前綴最大值)。用一個前綴和數(shù)組pre_max[i]表示前i個數(shù)中的
最大值,則a[y]至少為pre_max[y-1]+1。
現(xiàn)在從左往右遍歷a[N],分類討論每一個a[i]的情況:
1.a[i]==0且位置i是前綴最大值,令a[i]=pre_max[y-1]+1
2.a[i]==0且不是前綴最大值,根據(jù)貪心思路令a[i]=1(字典序最小)
3.a[i]不為0,是第x+1到第y-1個數(shù)的其中一個,但是比前x個數(shù)要大,破壞了前綴最大
值的要求,此時需要把之前的某個能改的值提高為a[i]
對全部a[N]修改完畢后,再重新for循環(huán)掃描一遍看看新的a[N]有沒有沖突,有沖突輸出-1
注意事項:這題有T個測試,每個輸出最后不能帶空格
以房間1為根節(jié)點的樹。每次traversal相當于從根出發(fā),沿著父子關系一直走,一個traversal
的終點一定是一個葉節(jié)點,因此最小的traversal數(shù)必定為葉節(jié)點數(shù)量,可以用dfs得到,假設
這個數(shù)量是k??梢杂脴渖螪P來記錄每個節(jié)點的子樹擁有的葉節(jié)點數(shù)量,狀態(tài)轉移方程為
dp[fa]+=dp[child],則dp[1]就是整棵樹擁有的葉節(jié)點數(shù)量
此時來看題目對potion的描述,每次traversal會在一個節(jié)點生成一個potion,下一次traversal
前消失,而我們只會有k個(即dp[1]個)traversal。因此實際上只需要考慮前k個potion。而由
于potion是依靠traversal獲取的,因此potion和traversal,也就是葉節(jié)點,是一對一綁定的。
假設我們目前在某個節(jié)點p,從點p出發(fā)獲得的potion數(shù)量不會超過點p的子樹擁有的葉節(jié)
點數(shù)量。我們再用一個樹上DP,potion[p]表示點p的子樹擁有的potion數(shù)量,狀態(tài)轉移方程
為potion[fa]+=potion[child]。統(tǒng)計完畢后再令potion[p]=min(potion[p],dp[p])。
最終potion[1]就是本題答案。
抽屜原理+同余性質
題目等價于N個數(shù)除以L最多只有3個不同的余數(shù),根據(jù)抽屜原理,任意選擇4個不同的數(shù),
必定至少有兩個數(shù)a[i]和a[j]除以L的余數(shù)相同(即模L同余)。由同余的基本性質可知abs(a[i]-
a[j])必定能被L整除。因此本題只需要從a[N]中任選4個不同的數(shù),枚舉它們的兩兩差值(一共
有=6種),對這6個數(shù),枚舉它們的所有因子fac,進行檢驗(看看a[1]到a[N]除以fac是不
是最多只有3個余數(shù)),符合要求則令ans+=fac。
USACO的前四場比賽是在線進行的,而且歡迎世界各地的選手參加,近年來隨著國內信奧學習熱度暴增,參加USACO的國內選手人數(shù)也與日俱增。
對于希望提升或檢驗自己信息學水平的中國選手,USACO是非常值得參加的;對于有前往美國留學意向的選手,USACO Platinum白金組的獲獎,也是相當硬核的履歷加分項!
對于這一階段的孩子來說,培養(yǎng)編程計算機的興趣和思維能力更重要。建議大多數(shù)同學通過參加編程俱樂部,或者編程活動使得學生對編程有濃厚的興趣,在編程方面可以從較為簡單的Scratch、Code.org入手,了解基本的編程概念和算法原理。
接觸編程比較早的同學,從6年級開始就已經(jīng)系統(tǒng)的學計算機相關知識了。那么對于剛接觸USACO競賽的同學來說,可以先以USACO競賽語言為突破口,先學習編程語言,對編程零基礎的同學可以從Python或Java入門,并學習對應的數(shù)據(jù)結構和算法??梢酝ㄟ^USACO競賽官方的題庫在線練習,在一定練習后可以準備USACO競賽銅級考試。
在這個階段,學生已經(jīng)掌握了較為扎實的基礎知識,可以正式參加USACO競賽實戰(zhàn)了,在備考時,重點是深入學習數(shù)據(jù)結構和算法,需要熟練掌握至少一門編程語言,建議學習C++語言,后面如果想繼續(xù)挑戰(zhàn)信奧賽也是支持C++語言的。
在備考USACO競賽時還建議同學們多參加模擬比賽以及解題訓練,不斷優(yōu)化解題思維。
這些學生面臨著申請壓力,通過USACO競賽來提升申請競爭力是很明智的,因為USACO競賽備賽周期短,出分快還是很香的。
學生這一階段需要提升USACO競賽獎項含金量,比如爭取達到USACO白金級別。
USACO競賽培訓輔導課程:咨詢網(wǎng)站客服了解~
微信咨詢