1. 程式人生 > >浙江財經大學第十四屆程式設計競賽命題感想

浙江財經大學第十四屆程式設計競賽命題感想

題目和題解點這裡:http://www.cnblogs.com/zufezzt/p/8648892.html

24號,學校一年一度的程式設計競賽結束了,這一次是我和兩個學弟命題的,還有一些人進行了題面書寫、review,還有一部分人幫忙進行了驗題。所以我想記錄一下這次命題的詳細過程,以後可以成為一次美好的回憶。


大概從元旦前夕開始,逐步有了一些 idea,有些很 easy,有些很難(估計是我太菜了)。大概在過年的那段時間,有了一些比較好的 idea。接下來逐題說一下每一題的 idea 誕生過程,感覺每一題背後都有一些小故事。

A 題:這題是比較晚才確定的,當時缺一個簡單的貪心簽到題,而我那時幾乎又被榨乾了,所以我讓兩個學弟(張海棟,王豪)去摸索 idea,結果他們給我說了 6 個不同的版本,這題是其中一個版本。之後張海棟進行了一波嚴格證明,表示排序一定是最優解。(如果沒法嚴格證明,我們就要換題了唄)

B 題:這題是在寒假期間確定的,由王豪提供 idea,感覺這題還是不錯的,看著好像很慌,仔細畫一畫發現並不噁心。

C 題:這題我拿來湊數的。感覺這題出的是最爛的,很無聊。不過在寫 std 和出資料的過程中發生了一些比較有趣的事。

D 題:這個遊戲一般參加過學生會或社團的同學應該都玩過。然而王豪在一次玩這個遊戲的時候,想到了這個問題。仔細分析並不難,可以歸結到經典的 nim 取子游戲。感覺這題比較接地氣,畢竟遊戲規則大家都懂。

E 題:這題的 idea 誕生比較扯淡,寒假裡有一場牛客網比賽Wannafly挑戰賽10,其中的 B 題,當時看錯了題意。看錯後的題意就成了這個 E 題。

F 題:這題也是比較晚確定的題,當時缺好幾個 easy 題。我就開始瘋狂想 easy 的 idea,然後就有了這個 F 和最後的 M。這題王豪直接扔了一個簡單優美的公式搞定了。

G 題:這題原本不是這樣的,最初的 idea 是給出一個矩陣,可以把 -1 替換成你想要的任意一個數字,然後最終得分是每一個連通塊大小平方的和,想了半天不會(如果有大佬會還請留言)。後來我把矩陣換成了序列,就可以搞一搞了。這題是這場比賽中我覺得最棒的一題了。

H 題:這題也是自己想的 idea,不過 HDU 的岑肅廷大佬說這題是 WF 的弱化版。當時想到這個 idea 時,並不知道 WF 題長什麼樣。這題最初的版本:平方那部分是絕對值,這樣可以斜率優化搞。改成平方和,斜率優化好像不能來了,但決策單調性並沒有被破壞,因此就這樣了。最後順便和王豪把 WF 那題也擼了一下,確實那題好強啊。

I 題:這題最初的版本是個一個長度為 10 萬的字串,在這個字串的所有排列中,找到字典序第 k 小的,k 有 1e18。後來發現這個版本很不人性化,寫程式碼的時候要判爆 long long 之類的,所以弱化了一下,改成了這題現在的樣子,比較和諧。

J 題:這題是放寒假之前,有一次和學弟去吃中飯的路上瞎聊聊到的,“尤拉路徑是每一條邊走一次”,“哈密頓路徑是每個節點走一次”,“那麼歐哈密拉頓路徑呢?豈不是一條鏈。”,然後這個 easy 題就有了。

K 題:寒假在家閒著沒事幹,瞎想。於是題目來了。

L 題:這題一開始的版本不是這樣的。那時候覺得缺一個構造題,於是我就亂想了一個題。就是把這題去掉 4,5 兩個條件。正常人幾分鐘就知道怎麼搞了,定位為 easy 題。王豪覺得太簡單了,加個對角線的條件試試,後來他開始手動構造,構造出來了一些,但沒有發現明確的規律,於是乎我們開始爆搜,他一開始寫錯程式碼了。我上了幾發之後,發現爆搜賊快。於是這題就有了。

M 題:同 F 題,同一時期想出來的 easy 題。這題有兩個版本,這個版本比另一個複雜一些,還帶一些坑,所以有用這個版本了。


idea 想完後,我回到了學校和他們開始了正式出題工作,這題命題流程較為規範,我們用了 codeforces 提供的命題平臺 —— polygon。真的是一個非常好用,非常棒的平臺,幫助我們大大提高了命題的效率以及準確性。由於命題組英語水平較為奇特,我先分配了幾題分開寫題面,王豪英語水平好像還是我略高一些,所以我讓他主要負責寫 validator(資料範圍合法性驗證) 程式,std(標程) 程式,以及生成資料的程式,以及一些答案錯誤,超時的程式;在他寫程式的同時,我和張海棟瘋狂寫題面,感覺我這種英語真渣渣簡直要瘋了;史海虹大佬由於平時業務繁忙,我分配給他了幾題題面的書寫(D題,F題,M題),包括在後期 review 的時候,史大佬的題面是改動次數最少的,不愧是讀過書的高階知識分子!

在題面搞得差不多完工的時候,我們找到了陳銘洲大佬幫忙一句一句 review,經過一番大改動,題面終於能讓人看懂了。(我很佩服他是怎麼看懂題面的)

下面講一下每一題在出資料,寫題面過程中的小故事:

A 題:張海棟抄來一段孟姜女的故事,經過一頓修改,有了故事第一段,我給他配了幾張圖,然後題目主要部分寫的看不懂,我和他就改造了一下,差不多是最終看到的那樣。造資料倒是沒什麼奇葩故事發生,後來張海棟證明做法的正確性。

B 題:一開始題目不長這樣的,我給王豪看了個什麼東西,他突然靈感大發,來了這個 idea,我聽了之後好像覺得不錯,就留下來了。造資料好像也沒發生什麼奇葩故事。

C 題:這題我先寫了一段中文題面,然後交給張海棟去寫英文題面了,寫完還配圖,真貼心。他造完資料,寫完程式碼,跑資料,發現死迴圈了,後來發現存在負環,spfa一直在那繞圈圈,出不來了... ...於是乎他去研究消圈演算法,未遂。
“出題人不會做怎麼辦?”
“那就改成有向無環圖唄,不就會了。”
希望有會的大佬教我們一下。

D 題:中文題面我寫了一波,交給史海虹大佬去翻譯了,翻譯完了簡潔明瞭,非常到位。造資料好像也沒發生什麼奇葩故事。

E 題:這題資料和題面都是毒瘤,第一版題面是我和張海棟寫的,英語太爛了,表述的很爛,後來陳銘洲大佬幫忙大改了一通題面,有了現在的樣子;這題出資料是個技術活,反正各種搞。。搞了一大堆資料進去。。

F 題:史海虹大佬寫的題面,太強了;王豪負責造資料。好像他造完之後答案沒爆int?被我加強了一下,記不清了。反正把一些浮點數做的卡掉了,寫的不好會掉精度,整數運算最穩。

G 題:我親手寫的題面,真的是要命了。。讀題者估計一看就能發現題面畫風和先前的不一樣,因為這是我寫的。。。。在最後快完工之前,我造了不少資料,張海棟手造了幾組。

H 題:這題題面很短。王豪造了一波資料,我就故意寫暴力,AC了,然後加強資料。

I 題:張海棟寫的題面。王豪造資料,我記得他手動造了很多資料。

J 題:張海棟寫的題面。王豪造完資料之後,發現兩人程式碼好像跑出來結果不一樣,王豪發現張海棟沒考慮到一條鏈一個環的情況。然後讓我寫,錯了兩次之後我對了,然後他們開始修他們的bug,最後我還加強了不少資料進去。和張海棟也手造了很多。

K 題:我寫的題面,讓王子恆和杭電岑大佬驗的題。出資料好像沒啥故事。

L 題:我寫的題面,我寫的 SPJ,王豪造了一波資料,王子恆驗題是發現數據水了,沒有出 K<0 的資料。。。我後來和王豪又加了幾組。

M 題:史海虹大佬寫的題面,某天晚上張海棟發現此題有坑。王豪造的資料,我去驗題,我故意寫錯的程式碼,發現 AC 了,寫暴力模擬,也能 AC,然後發現王子恆錯誤程式碼也能 AC,於是我先加了幾組資料進去卡掉了這些錯誤做法,後來大半夜的,張海棟又加了幾組超強資料。

最後幾天,不斷的 review,不斷嘗試錯誤解法能不能通過,感覺我們這種鶸出題目真的是開頭難,中間難,最後更難。最後幾天一直擔心會不會我們的思路是錯的,導致出了個錯題;會不會資料不夠嚴謹,導致暴力,或者錯誤的做法水過去... ... 好像從已知情況來看,沒有發生這樣的問題。

最後再說說現場賽的情況:
這次現場賽邀請到了浙江理工大學,魯東大學,煙臺大學來參賽,不說別的學校了,我們學校好像略微有一些慘淡,我們認為的 easy 題,沒有一個隊伍擼完的。別的題過不了就不說什麼了,可能有一些腦洞沒想清楚,但是 J 題真是個不能再 easy 的題了,但是校內集訓隊大二成員竟然沒有一個隊伍提交?!我們是被驚到了,明明人家理工早就 AC 了,為啥不去看看這題呢,看了就過了。反而大一的呂效華、蔡怡帥、李欣陽隊伍有 8 次提交,好像他們思路和坑點都想清楚了,但他們被 memset 卡超時了,我覺得挺好的,下次再碰到以這樣形式給出的資料範圍就知道不能 memset 了。本身預計大二的隊伍可以擼 7 到 8 個題,但事實上好像差了好多,當然這個和他們拆開組隊也有很大關係的。

我快畢業了,這估計是我第一次也極有可能是最後一次花了那麼大力氣來弄一套還算能看的題,好像裡面並沒有什麼很奇葩的演算法(因為我和兩個學弟都是鶸,高階演算法和資料結構都不怎麼會),整套題的感覺應該是思考 > 知識。

陳老師希望我出的題可能是一些類似於水仙花數的題,但我覺得那樣的題一來浪費命題人的時間,二來這些題目沒有什麼價值,應該放在課程教學裡的吧,而不是放到競賽中來,三來對參賽選手來說沒什麼有趣的地方,即使過了這題也不會有什麼快感吧。像這次的 B,F,M 題,對於一個沒搞過 ACM,或者搞過一點點時間的人來說,都是留有機會 AC 的。我看到在賽場上,很多人在 M 題上搞了好幾個小時,每次提交程式碼之後按著 F5 重新整理網頁滿懷著希望,看到返回 wa 之後的沮喪,但他們沒有放棄,很多隊伍在 wa 了七八次,甚至十多次之後,當網頁上跳出 Accepted 的那一瞬間他們肯定很激動吧,一定是非常有成就感的,因為這是憑他們自己機智的思維得到的成功,即使沒有 AC 很多的題,我覺得這是 ACM 競賽真正想要傳遞的精神。

最後,再次感謝王豪,張海棟,王子恆,陳銘洲,史海虹,岑肅廷和我搞了這件事情,把浙江財經大學的題帶到了牛客網上,謝謝。

相關推薦

浙江財經大學程式設計競賽命題感想

題目和題解點這裡:http://www.cnblogs.com/zufezzt/p/8648892.html 24號,學校一年一度的程式設計競賽結束了,這一次是我和兩個學弟命題的,還有一些人進行了題面書寫、review,還有一部分人幫忙進行了驗題。所以我想記錄一下這次命題的詳細過程,以後可以成為一次

浙江財經大學程式設計競賽題解

【題面pdf下載】連結: https://pan.baidu.com/s/1Eb16fHtNYMLrRk9QnXWa-g 密碼: dwn8 【現場賽排名】連結: https://pan.baidu.com/s/1jfzH6-7BoPhEjnijGQK53w 密碼: y669 感謝各位大佬的參賽

浙江財經大學程序設計競賽題解

single 第十四 limit 最優解 都是 bcd 發現 題意 無重復字符 【題面pdf下載】鏈接: https://pan.baidu.com/s/1Eb16fHtNYMLrRk9QnXWa-g 密碼: dwn8 【題目牛客網提交鏈接】 【現場賽排名】鏈接:

福州大學程式設計競賽_重現賽 A Salty Fish(思路)

海邊躺著一排鹹魚,一些有夢想的鹹魚成功翻身(然而沒有什麼卵用),一些則是繼續當鹹魚。一個善良的漁夫想要幫這些鹹魚翻身,但是漁夫比較懶,所以只會從某隻鹹魚開始,往一個方向,一隻只鹹魚翻過去,翻轉若干只後就轉身離去,深藏功與名。更準確地說,漁夫會選擇一個區間[L,R],改變區間內所有鹹魚的狀態,至少翻轉一隻鹹魚

(補題心路)福州大學程式設計競賽_重現賽

個人感覺是最短路大冒險…… (不知道為啥中暑了腦子反而活躍了起來,就是程式碼實現非常gg) fzu 2253 Salty Fish 漁夫翻鹹魚,會把一個區間裡的1翻成0 0翻成1 區間長度至少為1 問最多有幾個1 統計原先的鹹魚數量 考慮每

FZU 2256 迷宮 (DFS)(福州大學程式設計競賽

迷宮 Problem Description 某一天,YellowStar在人生的道路上迷失了方向,迷迷糊糊之中,它誤入了一座迷宮中,幸運的是它在路口處發現了一張迷宮的地圖。 經過它的觀察,它發現這個迷宮一共有n個房間,並且這n個房間呈現一個有根樹結構,它

福州大學程式設計競賽 G

Silchen有一個第1代字串"FZU",現在定義一個下一代生成如下字元'F'可以生成字串"FZU"字元'Z'可以生成字串"FZ"字元'U'可以生成字串"FU"例如:第1代是"FZU"第2代是"FZUFZFU"第3代是"FZUFZFUFZUFZFZUFU"Silchen想知道

湖南大學ACM程式設計新生杯 Dandan's lunch

Dandan's lunch Description: As everyone knows, there are now n people participating in the competition. It was finally lunch time after 3 hours of the co

湖南大學ACM程式設計新生杯 E.Easy Problem

E.Easy Problem Description: Zghh likes number, but he doesn't like writing problem description. So he will just give you a problem instead of telling a l

湖南大學ACM程式設計新生杯(重現賽)a+b+c+d=?

a+b+c+d=? 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 This is a very simple problem! Your only job is to calc

湖南大學ACM程式設計大賽 I II play with GG

連結:https://ac.nowcoder.com/acm/contest/338/I 來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 262144K,其他語言524288K 64bit IO Format: %lld 題目描述 IG won the S ch

湖南大學ACM程式設計大賽 G a+b+c+d=?

連結:https://ac.nowcoder.com/acm/contest/338/G 來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 This is a very

湖南大學ACM程式設計大賽 F Find the AFei Numbers

連結:https://ac.nowcoder.com/acm/contest/338/F 來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 262144K,其他語言524288K 64bit IO Format: %lld 題目描述 AFei loves nu

湖南大學ACM程式設計大賽 E Easy problem

連結:https://ac.nowcoder.com/acm/contest/338/E 來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K Special Judge, 64bit IO Format: %lld 題目描述 Zg

湖南大學ACM程式設計大賽 D Dandan's lunch

連結:https://ac.nowcoder.com/acm/contest/338/D 來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 65536K,其他語言131072K 64bit IO Format: %lld 題目描述 As everyone

湖南大學ACM程式設計大賽 C Sleepy Kaguya

連結:https://ac.nowcoder.com/acm/contest/338/C 來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 262144K,其他語言524288K 64bit IO Format: %lld 題目描述 Houraisan☆Kaguy

湖南大學ACM程式設計大賽 B bearBaby loves sleeping

連結:https://ac.nowcoder.com/acm/contest/338/B 來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 131072K,其他語言262144K 64bit IO Format: %lld 題目描述 Sleeping is a f

湖南大學ACM程式設計大賽 A-AFei Loves Magic

連結:https://ac.nowcoder.com/acm/contest/338/A 來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 131072K,其他語言262144K 64bit IO Format: %lld 題目描述 AFei is a train

湖南大學ACM程式設計大賽 K The Right-angled Triangles

連結:https://ac.nowcoder.com/acm/contest/338/K 來源:牛客網 題目描述 Consider the right-angled triangles with sides of integral length. Give you the integra

湖南大學ACM程序設計新生杯 Dandan's lunch

party one som triangle read diff 大學 lin gets Dandan‘s lunch Description: As everyone knows, there are now n people participating in the