2023 icpc 桃園站 心得
2023-11-19 00:45:34

前言

今年靠著topc跟cpe,順利晉級icpc桃園站,這裡記錄一下第一次打icpc的心得。

出發

地點在桃園體育館,從中央到那大眾運輸需要搭公車到中壢站在轉乘台鐵到桃園站,接著步行或騎車,於是比賽當天一早七點就在學校等第一班公車了,大概花了一小時抵達。後來得知另一隊搭計程車在跟學校報帳,搭了600塊錢XD。

比賽

比賽時間從9:30 ~ 14:30,平常這時候大概在睡覺,根據前幾年歷屆 通常最水兩題是第一題跟最後一題,所以我們就先開這兩題,看了記分板也發現大家都先解這幾題,

M 簽到題, 1 try

A 水題, 5 try

給至多1000位的數字,判斷是否被13整除;題目提到將該數字從右至左每三位輪流做加減法,得出的數字ans如果可以被13整除,則原數字也可以被13整除。 輸出ans的絕對值,以及yes / no。

然後我們沒看到要取絕對值,吃了五個罰時...

B 數學, 5 try

給一循還小數,找出該數值最簡分數。 一開始用python, 用內建 gcd 不知為啥一直吃re,後來改C++才ac。

H , 2 try

背包題,文獻+學宇解的,窩不會dp。

D 模擬, 1 try

給一飛機座位圖,.表示乘客,V表示帶有病毒的乘客,相鄰病毒的乘客需要隔離,輸出每位乘客要隔離的天數。 其實某種程度也算水題。

F 模擬, 3 try

給你很多個 task,每個 task 有所需時間跟單位時間罰款,每個 task 所要支付的總罰款為單位時間罰款乘上前面的總和時間,要重新排序所有 task 使得罰款總和最小;隊友(學宇)說最近程設專題剛好有遇到類似題目,就解了。

C 線段樹, 2 try

n個燈籠,每個燈籠用sipi來表示,si可為0(關) / 1(開) / -1(壞掉),pi代表該燈籠原始分數。

m個操作,有兩種操作:

  1. W l r,將[l, r]區間的燈籠都reverse switch
  2. C score,將當前亮著的燈籠全部加上score分

輸出最終所有燈籠的分數總合。(n <= 1e6, m <= 1e6)

解這題的時候剩下一小時,已經封版了,我們當時在60+名,所以必須要解掉這題才有牌,雖然知道是線段樹,但我們線段樹實作經驗不多,當下有點緊張。

最後用線段樹維護區間內亮著的燈籠個數,加上懶標跟壞掉的燈籠前處理,兩次ac,鬆了一口氣(還好有放模板)。

這題解完剩半小時,想說應該有機會銅牌了,就去吃了點東西,回來 稍微看了一下L跟J,但沒什麼想法。

L

給你一個數字 N,你要分解成很多個數字並且總和是 N,問你最多可以分解成幾個數字,並且這些數字任取總和都不會是 9。

後來問其他隊,得知是構造題? 說實話,我到現在都還不是很確定構造題是怎樣的題目...

J

這題花了十分鐘才搞懂題目的意思,給你一張只有一個起點跟一個終點帶有邊權跟點權的 DAG,問 critical path 長度多少,若 critical path 恰一個,則要輸出該 path,應該是跟拓樸排序有關,但n跟m只有50跟100,覺得怪怪的,隊友(文獻)說可能最外層要按照時間去遍歷?

賽後

這次題目相比前幾年或ncpc,真的是非常平易近人,普遍都是7題以上,前十幾名都10題+...

最終51名/7題拿下一個銅牌。

能改進的大概就是水題吃太多罰時...,前兩小時總共10個罰時,直接加200 penalty,要不是今年能解的題目數量變多,不然我們可能罰時就輸了。

另外還要恭喜中央另外兩隊都有晉級到asia play off,真的很強orz,我們隊就看明年能否拿個銀牌吧!

最後,真的感謝隊友過去一年的練習,感謝你們的carry :D

2023-11-19 00:45:34