其實這玩意應該放在計算機下,但是說的更多是人生相關,因此扔到這裡來了。

幹了將近一年近似假的但不是假的題庫管理員,明年開始就不幹了(明年年初……),專心滾去翻譯題目(並不,先把 JOI 做了吧……誒還是先學數學吧……)。

這一年裡見識了各種各樣的題,也見識了形形色色的出題人,下面總結一下作為一個合格的出題人應該如何在 LibreOJ 上出題,當然也包括在各種比賽裏如何出題。

Part 0x00. 一個好點子

出題當然是先要有一個好的點子來出題啦,比如數據結構,巧妙的 DP,多項式相關,數論,或者其他想與大家分享的優秀思路,都可以拿來出題並上傳。但是有一些點子不鼓勵出題,比如常見思路(比如今年 CSP 12 月的第四題,貨車運輸模型已經被出爛了),過於簡單(如果是比賽題,由於要保證比賽完整性,需要一起上傳),錯誤的點子等等。

LibreOJ 上對於題目管理有嚴格的規範,在這裡,很多情況被刪的題屬於第一大點的第三點,也就是「非模板題過於簡單,且無出處」這項,如果你的題被管理員們一眼切了,那肯定就 GG 了。

其次,LibreOJ 不支持放置私有題目,因此自測題會很快被刪,如果不想公開請明確標明,或儘快聯繫管理員。只需要在該題的題目討論區發帖就行了。如果有版權問題,請不要向 LibreOJ 上傳,在 LibreOJ 上幹不 Libre 的事情,感覺很彆扭,也很欠揍。

關於搬運的題目,如果是成套的題目建議成套搬運,比如省選題目。如果是有改編的情況……這個其實很難辦,因為不知道版權方是否允許演繹。但是根本上,LibreOJ 尊重版權,對於版權模糊的情況,請標識出。如果已經侵害到您的版權,請聯繫管理員。

最後,請出題人保持聯繫方式暢通。我聯繫了一位出題人,結果他過了兩個月左右纔回信說明……我也知道各有難處,但是盡量吧,管理員可能會就題目的一些問題同出題人聯繫的。

Part 0x01. 熟悉 LibreOJ 的一些規定,寫題面

對 LibreOJ 最贊的一點是它的題目排版質量,這也是很多用戶喜歡 LibreOJ 的原因,然而新加的題目若不按規範排版,將給管理員帶來很大麻煩。詳細要求在這裡,在添加題目之前請把這篇文章全文背下來!

對題目用心排版,既保證了題目的美觀,也能在排版的過程中規避很多文法錯誤和語義歧義的問題,使公式變得美觀。俗話說:「人靠衣裝馬靠鞍。」,考點與做題者的交互只是通過題目,如果沒有題目這個「衣裝」和「鞍」,考點這個「人」和「馬」也不會變得光鮮起來。

我個人的觀點是,呈現一個易於閱讀的題目是出題人對做題人的一種尊重,包括很多紙質資料,都應該用心排個版。本身題目已經有考點了,就不要考察如何從糟爛的排版裏獲取信息的能力了。

這個不是強迫症,是每個人都能做的,是個態度問題。

題面可以簡潔,也可以新穎一些,但是少說廢話就行。這個是個性化的內容,其他人無法評價。

Part 0x02. 寫標準程序

以下定義來自 CommonAnts 爺爺:

標程是標準程序的簡稱,對於程序設計競賽題而言,標準程序就是一個能夠通過的正確的(或者幾乎正確的)實現題目演算法的被出題人欽定為參考的程序,正確,指能夠完成題目要求;對數據範圍內的任何數據都能夠正確或者有極高的概率正確,如果是非確定性演算法,一般在任何符合要求的數據集上至少保有 90% 完全正確率;欽定,指出題人規定,具有唯一性,且出題人在道義和可能的法律上為此負責。還有一些軟性要求。如果題目存在標準演算法(出題人欽定的正確演算法),標準程序需要是標準演算法的一個實現。

我對於這個東西沒啥研究,但是至少不能寫錯的(錯與以上內容中「正確」相對),其次不能寫欠揍的,就完事了。

蛤你問我什麼是欠揍的?我說了我沒啥研究啊……

我認為的欠揍的大概是:卡常卡精度的,打表的,看不懂的。

以上個人意見僅供參考……

Part 0x03. 出數據

出數據是最討厭的事情了,需要考慮數據梯度,每個梯度設定多少分值,然後還要想很多極端數據卡滿範圍,盡最大可能從多方面測評選手程序。這個其實是一個軟體測試上的問題,更多的是需要出題人用心對待。這件事不是 10 組隨機數據就水上去了事的事。

出好了之後需要檢查數據是否符合題目描述中規定的格式,datamaker,validator 和一堆 brust 程序是常態,而不是想像中那麼簡單的。

還有 SPJ 都在這個時候寫,請使用 testlib,真的很好用。

Part 0x04. Cross Check

最後一步就是交給其他人評審了,找個靠譜的人就完事了。主要檢查標程是否有誤,數據是否正確,題面是否清晰,限制是否能讓大多數正確解法通過。

所以出一道題的時間大概一天或者兩天左右。(從寫題面開始)

然後如果要提交到 OJ 上,需要儘可能支持更多語言的測評,比如考慮到 Java 虛擬機的啟動速度,需要給更多的時間限制,因此對於時間限制和空間限制的控制需要注意。

出題不僅僅意味著出了名,可以考住別人了,更多的是一種責任。在考三模的時候,數學老師因為一個小小的錯誤導致了她出的解析題標準答案錯誤,其實答案裏給的答案是一個增根,此題本質是無解的,這樣就導致了評分的困難,其實可以不管,因為真的就是都少了這個分,但是她還是給我們強調了一週討論的嚴謹性問題,一說到解析題就肯定把這道題作為例子。出成題目的目的本應是交流想法,而不是告訴其他做題者我出了這道題,因此需要為自己的想法負責。

當然考試的時候題目需要有區分度,目的就變成了選拔選手,這個是不同於在某個 OJ 上出題的,需要綜合考慮選手和選拔標準,出適合的題,而不是出難題。不過看起來出題人總是被罵的那個……


一年以來,大量譯制題目的出現,讓更多人跨過語言障礙,做到了其他國家的題目;一本通題目的加入,給了我們很多經驗和教訓,也帶來了很多新面孔和新朋友;有趣的原創題增多,常年未修的題目不斷修復加入,也給了 LibreOJ 更多活力。

新年遼,一年以來,感謝陪伴!

祝新年快樂!

以上。


推薦閱讀:
相關文章