日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CSP-S2019游记

發布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CSP-S2019游记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注: 本文寫于11月17日傍晚。成績公布前暫時加密。

賽前

瘋狂頹廢。
前一天上午打了一下excrt的板子,看了一下\(O(1)\)快速乘等一些小技巧。
感覺自己一年比一年頹廢……吃棗藥丸
今年高一,不管怎樣心態都和初中時不一樣了吧。初中時打掛了還能慶幸自己年輕,現在打掛可真的就不是鬧著玩了……
看考場,發現和lrh&ll一個考場。我怎么覺得17年的時候我們就一個考場呢(雖然好像不在一個組)
考前繼續立flag,希望不要哭著出考場吧(noip2018&pkuwc2019兩次嘗試失敗)

11.16 (Day 1)

我的Day1體驗和大多數低水平選手基本一致。
順序看題。
8:45左右寫完T1. 一遍過了樣例,但是\(n=64\)莫名會掛。最后把(1llu<<n)-1強行改成llong qwq[N+3]; qwq[1] = 1llu; for(int i=1; i<=N; i++) qwq[i] = (qwq[i-1]<<1)|1;才過。
9:10左右寫完T2. 本來覺得做法很虛容易寫掛,反復檢查了一下,結果一遍過樣例了。又去寫暴力,9:25左右拍上了。
1h切了前兩題,這勢頭不對,難道又是全場ak的day1……我打開了T3
這什么玩意??他說的交換數字結果下面配圖很明顯是在交換編號啊???頓時蒙蔽,舉手提問題目是否有問題,得到了No response的熱情答復。
看了半小時,發現那個圖居然和我的習慣不一樣……那個圈里的數是數字圈外的數是編號……
這時候還有2h, 可是仔細看看這題我怎么一點思路都沒有啊……感覺情況非常的復雜,不是很好處理……
打了個10分暴力,又各花了0.5h想兩種特殊形態的部分分,依然毫無頭緒
什么……別告訴我我2.5h剛一道聯賽題只拿10分……我不接受……我不同意……
時間繼續流逝,我又先后嘗試思考正解、鏈、菊花結果屢屢失敗。
我感覺想吐……
然而靈光并沒有閃現。
day1結束,期望得分\(100+100+10=210\)

出考場之后強忍住沒有掉淚,不過心態也基本崩了……17年和18年我的day1分別是\(230\)\(270\), 今年最多\(210\)了……真的有一種支撐不住的感覺
過了一小時和別人交流了一下,發現qdez基本都\(210\)……只有lky似乎想出了T3的\(O(n^3)\), 結果他寫炸了似乎要爆零,慘慘。
又去群里看了下發現大家都在抱怨T1T2sbT3難……突然感覺心態好了一些呢。
看到知乎上題解發出來了,T3的50其實挺套路的啊……為什么我就沒想到呢
傍晚gd初三巨佬zjr來問我估分,他\(235\), 還說GD全場都超過\(210\)了……我又開始崩了
最后聽說yamf T3都沒得超過10分,rqy&myh AK了,wqy T3沒做出,聽myh說集訓隊有一半人不會T3……那這么說的話這場就沒有什么區分度了,我就當今天什么都沒發生,day2加油。

11.17 (Day 2)

傳說中的有區分度的day2終于來了。
逆序看題。
T3, 怎么又是數據結構,棄棄棄
T2, 看上去像斜率優化?毒瘤,棄棄棄
T1, 計數??怎么現在計數都被放到T1了?沒辦法,剛剛剛
8:40 我終于看懂題了嚶嚶嚶
8:42 第一思路是枚舉做了多少菜,發現不可做
8:46 轉換一下思路發現最多一道菜會違反一半的限制,可以枚舉,然后就相當于這一個比別的都多,dp一下,\(O(mn^3)\),一臉懵逼
8:48 發現我的轉移枚舉選哪個是廢的,\(O(mn^2)\), 應該沒假吧
寫了滾動數組dp, 因為清空問題掛了15min,調過大樣例的時候大概是9:10
計數題……不拍了不拍了不虛,看T2
看到樣例3, 一個\(28\)位數赫然地擺在題面里,出題人你真的不嫌自己毒瘤嗎
冷靜了一下,似乎和斜率優化沒什么關系?有一個顯然的\(O(n^3)\) DP是設\(f[i][j]\)表示當前劃的最后一段末尾是\(i\), 前一段末尾是\(j\), 發現轉移可以優化,\(O(n^2)\).
寫完了,我怎么又一遍過樣例了??感覺這次畫風好奇怪啊,代碼難度大幅降低?還是我太菜了想不出代碼難度高的正解?
又想了一會沒想到什么比較好的優化,感覺是個貪心又沒有貪心策略,于是開了T3.
\(40\)分顯然白送,鏈顯然白送,然后呢……完全二叉顯然白送……嗎??我感覺我好像不太會寫啊.jpg
于是先去寫了一個\(O(n^2)\), 又一遍過樣例了,今天這是怎么了……鏈的\(15\)分過會再寫吧
想了一會正解,感覺沒什么思路,只想到了一個求子樹內重心的做法: 重心顯然滿足到所有節點距離和最小。那求距離和是一個dp, 我把dp數組表示成\(at+b\)的形式, \(t\)是樹總大小,然后線段樹維護凸包,就可以輕松應對子樹內了……子樹外……沒啥想法啊……
又看看數據范圍,\(n\le 3\times 10^5,T\le 5\), \(O(n\log n)\)都很難通過,線段樹維護凸包可以去死了……
我是不是要止步\(100+64+55=219\)了?這樣的話我離考過去年還差\(3\)分,不甘心……還有1h40min, 我能怎么辦……
現在我還有兩個選擇,一是想T2正解,二是莽T3的完全二叉樹(因為我自知數據結構水平太低想不到正解)。我決定先想一會T2,然后再去想T3.
打出DP表,發現固定\(i\)在合法的前提下\(f[i][j]\)\(j\)的增加而不升,然后又證了一下感覺挺顯然的,那么其實就是要讓每次劃分最短。哦這么顯然的結論我都要打表觀察……我是個弱智么?!
此時我過于激動,想都沒想寫了個\(O(n)\)雙指針找決策點,一發過了前兩個樣例,好,我穩了!測第四個樣例(第三個是高精測不了),比答案大了好多……
難道結論錯了?拿暴力程序跑了下,\(dp\)數組是單調的啊??那是怎么了??哦,決策點顯然不能直接雙指針求……我果然是個弱智
那怎么求啊?似乎只能二分+線段樹\(O(n\log n)\)? 線段樹……我真的能寫出來嗎……
T3還有\(15\)分暴力沒打,T2還生死未卜,看著右下角的時間11:01, 渾身無法阻止地冒著冷汗……
冷靜一下,每次覆蓋,單調棧就行了!可是還有兩個該死的二分去不掉,\(O(n\log n)\), 整理一下思路,開始寫吧……
比我想象中的好寫一些,十幾分鐘寫完了,調了一會發現二分的方向反了,改過來過了所有樣例!
還有30min, T2來不及對拍,快馬加鞭寫了個T3的\(15\)分暴力, 這恐怕是我兩天寫得最不順的一個代碼,掛了好多次……
11:47, 我終于調過了樣例,期望得分\(100+88+55=243\).
最后十幾分鐘覺得對拍意義不如肉眼檢查,于是檢查了十幾分鐘文件名、輸入輸出、數組和空間,T2精打細算開了\(1000 \text{MB}\).
結束的那一刻,我把T2的數組從\(4\times 10^7\)改成了\(10^6\). 我不配寫正解,我不配開大數組……
總期望得分\(100+100+10+100+88+55=453\), 感覺墊底水平……但愿別掛……

考完后直接返回(沒有掉淚,flag成功達成)。途中交流了一下,hyw和nyd怎么都說自己T1不會寫了\(84\)喵喵喵?
hyw貌似考得不是很好,估分\(84+64+55=203\)左右,lky好像也不太好,jxp估分\(100+64+75=239\), 不知道gmt和yzx怎么樣。(這也許是qdez今年最有競爭力的五個人?)
比我低兩級的巨佬sqy估分\(245\), Orzzzzzz... 我被本省初中生吊打,沒救了……
在gzez一起訓練的scx,lh貌似直接心態崩潰……scx昨天\(210\)大眾分,今天自稱t1沒調出來,寫了個指數級暴力;lh自稱d1t2寫掛……默哀
zjr自稱估分\(219\), 但是我不會忘記他外號“張假瑞”的由來(大霧)
看上去大家得分都不是很高,如果我不掛的話還是有希望的……但愿別掛分……

總結與反思

這次也許我最想質問自己的一個問題是,為什么我經過這么長時間的訓練,還想不出Day1T3的50分那種比較套路的東西?
也許我會找出借口: 全SD也沒幾個人想出T3的50分啊??墒?#xff0c;所謂競賽就是要選拔出最尖端的那一撮人對吧。現在搞OI的人越來越多,如同千軍萬馬過獨木橋,如果我永遠抱著別人都不會我也不會的心態,每次都拿大眾分,還有什么勝出的可能?
現在的OI大概已經告別了那個比拼熟練度和穩定度的時代,因為熟練和穩定已經是對一個OIer的基本要求,而非用來區分選手的標準。在這種情況下,假設我連基本的套路都掌握不明白,又沒有過人的天賦來做出神仙題,大概只能成為大佬的炮灰吧。
初二,初三,高一,盡管我自己在不斷進步,卻趕不上時代進步的速度。去年ZR十連測,我的成績最后基本穩定在20名左右。今年ZR十連測,我的成績依然在20名左右(而且失誤掉下去的次數還在增加),永遠成不了最尖端的那一部分,省隊將與我有何緣?
因此希望自己以后做題的過程中一定要多積累一下值得借鑒的思路,并對這些套路有足夠的敏感度。(當然也不能過敏,忽視了反套路思維的訓練)
除此之外,自己的努力程度也明顯不夠。高一的四分之一已經過去,如果再不拼盡全力,明年成了一條命選手,驀然回首發現自己枉度五年光陰,將是何種情境,自己心里清楚就好。

賽后

upd 11.18: 發現day2t2我居然把一個單調的東西放在單調隊列里二分……我是智障

upd 11.18: 在學校上著上著課,突然腦中如雷擊般閃過一個問題。
我的day1t2。
嗯,我代碼原來是這樣的

const int N = 5e5; int cnt[N+3];

本機對拍\(10^5\)\(n=500\)的數據沒出現問題,但考試結束前發現cnt數組需要用到負下標,于是改成了:

const int N = 1e6; int cnt0[N+3]; int *cnt = cnt0+N;

更致命的是,我改完之后連測都沒有測直接交了上去。
附正確寫法:

(1)

const int N = 5e5; int cnt0[(N<<1)+3]; int *cnt = cnt0+N;

(2)

const int N = 1e6; int cnt[N+3]; //因為n<=5e5, 因此負下標會爆到前一個數組的后半部分,不產生任何影響

多少條正確的道路,我卻偏偏走上了錯誤的一條。
吊 死 于 括 號 樹 上
預估分\(100+0+10+100+88+55=353\), 那真的啥都別想了。
高一容不下失誤,一招不慎滿盤皆輸。

upd 11.20: 代碼終于發了。
我day1t2并沒有開錯數組,是我的印象出現了偏差。
但是day2t2因為一些智障原因掛成了\(64\)分。
洛谷得分\(100+100+10+100+64+55=429\). 有一定希望進營吧。
附day2t2掛題方式:
代碼:

int n,typ; llong a[N+3]; namespace BruteForce //200 MB {void solve(){for(int i=1; i<=n; i++) scanf("%lld",&a[i]),s[i] = s[i-1]+a[i];......} } namespace GG {void gen(){//讀入typ=1的數據}void solve(){if(typ==1) {gen();}......} } int main() {//freopenif(typ==0) {for(int i=1; i<=n; i++) scanf("%lld",&a[i]);}scanf("%d%d",&n,&typ);if(n<=5000) {BruteForce::solve();}else {GG::solve();}return 0; }

初始\(typ=0,n=0\), 所以并沒有讀入a數組,但BruteForce中有讀入a[i],GG中沒有.
我的本意是把a[i]的讀入放到main()函數里。因此我運氣好撿了\(64\)分。一切都是迷惑行為……
這大概就是走的時候檢查太倉促,沒有好好檢查讀入和數據分治的后果吧。
也許我本來只能通過這題\(88\)證明自己不是個什么都不會的暴力選手,結果它掛成了標準的暴力分。

總結

以上是生活随笔為你收集整理的CSP-S2019游记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。