OI梗
本條目僅收錄常見梗,過於小眾的用語不予收錄,尋找專業用語請去OI Wiki等專業網站。
“ | 模擬只會猜題意,貪心只能過樣例。數學上來先打表,DP一般看規律。 組合數學靠運氣,計算幾何瞎暴力。圖論一頓套模板,數論只會GCD。 |
” |
——請問說這句話的是蒟蒻還是大佬? |
OI用語
%%%
"%%%"是漢語「膜拜」的同義詞。
"%"是數學中的百分號,同時在包括C、C++等大多數程式語言中%也指取余或取模(類似除法中的餘數,但對於負數取模和取余不同)
因"%"可讀作模,並且較易於書寫,它常被用於膜拜大佬,或吐槽意想不到但又很牛的操作,常與神犇同時出現。
例如:
- --這道題很簡單,(貼出代碼)
--%%%%%%%%% - --(貼出一份暴力但是可行的代碼)
--%%%%%%%%% %*n (n>=3)
while(1) putchar('%');
蒟蒻
因諧音"巨弱",在OI圈中通常用作謙辭,表示自己很弱,常與神犇連用。
蒟蒻這種說法在界外人士看上去很弱智,畢竟哪有自己說自己蠢的。
但是如上文,蒟蒻其實更像是一種自謙,方便自己不要臉的去問人題以及一種對他人工作的肯定。
幾乎沒有OIer會說別人是蒟蒻,畢竟每個人的潛力都是無限的,這也是OI圈裏不成文的禮儀之一。
這也在你的計算範圍之內嗎?OIer!
例如:
神犇/巨佬
神
「神犇」為「大牛」一詞的升級版,「巨佬」(或「碩佬」)則是「大佬」的升級版(此外還有「奆佬」「㚐奆佬」「夶奆佬」這樣的疊字版)。
常用於稱讚指代方技術高超,常與%%%同時出現,一般用作第三人稱。用於自稱可能會被打臉
例如:蒟蒻前來膜拜神犇。
“ | 他站住了,臉上現出歡喜和淒涼的神情;動着嘴唇,卻沒有作聲。他的態度終於恭敬起來了,分明的叫道:
「神犇!……」 我似乎打了一個寒噤;我就知道,我們之間已經隔了一層可悲的厚障壁了。我也說不出話。 |
” |
——魯迅 |
有時在OI題目中出現,用於誇獎
|
水題
水題是指一道題過於簡單,一般為競賽的第一題,但近幾年也有例外。
此類題目可以是簡單的字串處理、簡單的模擬、簡單的數論數學。
水是相對的,在巨佬眼中也可以指一些非常複雜的題目。
即使是水題也有可能拿一些意想不到的、複雜的、容易看錯的點來坑人,也有可能由於樣例太水導致無法發現錯誤。
自動機
自動機是OI圈中的一種表述,多為玩笑話,oo自動機表示自己的某個程式於
oo自動機原型為AC自動機,本義為一種字串符合的演算法,具體參見AC自動機。
由於其中的AC與OJ上的評測狀態Accepted相同,不少人就拿此吐槽,還衍生出了其他的用法。例如:
- 自動AC機(自動AC的代碼)但千萬不要這麼做,你會被懲罰的(比如在洛谷上變成棕名)
- RE自動機(全部都發生執行時錯誤Runtime Error,如陣列越界、除以零、內存溢位、遞迴過深之類的)
- WA自動機(提交上去全部答案錯誤Wrong Answer)
- TLE自動機(全部超出時間限制Time Limit Exceeded,時間複雜度過高或程式中有無法退出的迴圈或遞迴
卡評測) - MLE自動機(全部超出空間限制Memory Limit Exceeded,陣列開得過大或遞迴過深等)
- OLE自動機(全部超出輸出限制Output Limit Exceeded)
- UKE自動機(未知錯誤Unknown Error,一般不是代碼的鍋)
元胞自動機
濫用自動AC機容易被關進小黑屋,見封禁公告。因此請各位一定要誠信做題。
也指一種演算法,見OI-Wiki對應條目。
卡常
「卡常」全稱「卡常數」,指運用各種奇技淫巧方法,針對程式基本操作減小程式在時間或空間上的常數因子,使之在規定的時空限制內通過測試用例;也可以指由於高強度或針對性的資料,時空複雜度正確並且實現無誤的演算法沒能在時空限制內通過測試用例。
常用的卡常方法有快讀快寫,位運算,迴圈展開,調塊長,手工棧等。
例子 |
---|
1.計算姬硬件卡常 出於計算姬的計算原理,當計算姬在計算除法,求余,開方等演算法需要消耗的時間是直接進行位運算的數十倍乃至百倍。 目前時間複雜度最好的除法演算法是利用牛頓-拉弗森方法完成的,可以將浮點數除法和IEEE 754定義下的浮點數求余運算的時間複雜度降低到與乘法相當;與之相仿的時,判斷一個大整數是否是完全冪次數已經有線性時間的演算法。然而,這些演算法相對於浮點數加減法來說,仍然有很大差異。而涉及到超越函式的浮點數運算往往是通過帕德近似甚至麥克勞林級數展開所完成的,在時間上是低效的。 導致可憐的OIer被迫使用更加難以編寫的位運算代替以上運算方式,並且,硬件卡常相當難以被發現。 2.OIer演算法卡常 這種卡常是由演算法本身的常數因子與演算法的不穩定性產生的,若此演算法不能有更好的實現,只能重新寫常數更優秀的演算法。 比較容易卡的演算法有點分治,DC3,分塊等等。
|
著名卡常題 |
---|
|
爆零
爆零在是OI圈指在一場考試中獲得零分,也可以指在一道題中獲得零分。
機慘
機慘全稱為機房慘案,指因為一個人用機房的做了一些會被封號的事情,導致被封禁IP位址,從而導致整個機房都被封禁的情況。
因為學校機房用的是局域網,而局域網的電腦有一個公共的IP位址,於是就發生了機房慘案。
舉個例子,有人在洛谷上搞事情,就會讓洛谷管理員查到你的IP位址,然後隨手一封,整個機房的電腦不能上洛谷了,可喜可賀。
因為OIer們大多珍惜自己的洛谷帳號,所以這種情況的發生,通常出現在交完代碼之後,忘記關洛谷,然後被喜歡搞事的人看到。所以建議在洛谷團隊或Q群而不是洛谷討論版進行機慘
但也有的機慘並不是破壞公共秩序的,如植入自動關機程式、修改用戶名(洛谷用戶名只能一年修改一次)等;這些的懲罰也基本在線下就能處理完畢。
也有一些機慘專用的貼文,用來搞事。一般都很生草。
I AK IOI!
fAKe/假
常指OI圈的裝弱文化。 常形容一個人明明很強卻說自己很弱的行為。
至於將AK大寫,是因為AK全稱是All-Killed,代表在比賽中獲得滿分,以突出這個人很強。
OI典故/成句
加邊!加邊!加邊!
加邊!加邊!加邊!是WC2021放映的WC2020宣傳片中的一個句子。
原句是「這是l,這是r,這些邊我不加。這些邊我不加,暴力怎麼做?加邊!加邊!加邊!好,然後併查集查詢。」因為這句話十分洗腦,所以每到宣傳片廣告放到這一段的時候,聊天區內就刷屏這句話。
其他說法:
- What about violence? Add edge! Add edge! Add edge! OK, and then search the set.
- 瞎編!瞎編!瞎編!
關於SPFA,它死了
關於oooo,它死了是一句OI圈的吐槽用語,表示oooo已經失去效力。
復活吧,我的SPFA!
這個梗的由來是NOI2018。NOI2018 d1t1 歸程需要使用最短路演算法,而可用的一種最短路演算法SPFA的時間複雜度是不確定的。所以出題人卡了這個演算法的時間[2],並在講評ppt上表示「關於SPFA,它死了」,這個梗因此誕生。
後來,當NOIP(全國青少年資訊學奧林匹克聯賽)在2019年因未知原因停辦[3]後,洛谷站長kkksc03在第九次洛谷Fan Meeting上用「關於NOIP,它死了」進行了吐槽[4],將這個梗進一步發揚光大。(目前NOIP已復活[5])
用法舉例:
- 關於SPFA,它死了
- 關於NOIP,它死了
- 關於CSP,它SPFA了
- 關於A*,它死了
但這裏的「死/SPFA」在特定情況下可換為「復活」,如「關於NOIP,它復活了」。
I AK IOI
I AK IOI(oo AK xx)是OI圈的一個成句,常見於洛谷等具有討論功能的OJ或其他社交平台。
其中AK意為「All-Killed」表示一套題里全部滿分,與之相對的有AF 「All-Failed」;後方的「IOI」則是OI的國際總決賽。
但是根據OI界日常裝弱的氣氛,這種說法存在可能性本應不大。
實際上,這很有可能源於OIer日常誇別人神犇配上的一句話,或者只是某種事實的闡述。
需要注意的是,並不能隨便說一個人AK了某某競賽,這很有可能會被當做陰陽怪氣。
如果你本來的目的就是如此那就不必在乎了
用法舉例:
- NOIp
-J終試結果出來後- 哇,我居然AK了NOIp!
- 某個用戶的比賽期間有人滿分
- 恭喜 XX AK了某某比賽
- 陰陽怪氣(損人用)
- 你個巨佬,YOU AK IOI CTSC !!!然而會有人查他成績,發現他沒那麼神犇
I wanna AK IOI
騙分導論
一開始是ID為「我是智障」(方宇浩)發表的一篇論文,其中用大量事實整合了在競賽中如何賺取部分分甚至滿分的方法。
後來被很多人整合成了順口溜,比如:
騙分過樣例,暴力出奇蹟。暴搜掛着機,打表出省一。N方過百萬,暴力踩標算。肥修賽大象,只是代碼短。
想要騙到分,一定有方法。圖論背模板,數論背公式,動規背方程,高精背代碼,要是都不會,乾脆輸樣例。
騙分在某些看起來難實際上用列舉、打表(如說在運算中需要求質數,在線求會比較慢,於是就離線先算好,把整個質數表存在一個常數陣列裏面,就是打表。)這種比較簡單的演算法來使此題AC或拿分從而不至於爆零。
騙分雖然有效,但是是歪門邪道,不要靠着每道題騙分的想法去比賽。其中「我是智障」表明:「騙分的最高境界就是不騙分」(其實能騙到分就已經非常香了)
另外,有人才把這句話P在了《你的名字。》的海報上。
方法:
- 暴力:n方過百萬就是暴力的一種,從字面意思理解,就是開兩次迴圈去模擬整個過程,然後得到OI賽制的部分測評點分(ACM賽制不可)
- 炸測評姬:在提交的c++程式中加入
#include<con>
(windows系統中使用)或#include</dev/console>
(Linux系統中使用) 。它非常強大,可以卡住評測系統,使其永遠停止不了編譯你的程式。唯一的解除方法是,工作人員強行關機,重新啟動,重測。當然,我不保證他們不會氣憤地把你的成績變成0分。請慎用此方法。(但各大 OJ 上基本已經實現對這招的防禦)
o年OI一場空,xxxx見祖宗
o年OI一場空,xxxx見祖宗是一句用於吐槽自己或他人在OI賽場上的表現的成句。
在每次OI比賽中,總有人寫了一些沙雕的代碼,而他們又總是後知後覺,在各大論壇上訴苦哭天喊地。本句具體出處未知。
用法舉例(此處的「十」僅為範例,應用時可根據實際酌情更改):
- 十年OI一場空,沒開ull見祖宗 //因為$n\leq64$,long long只能表示$2^{63}-1$,所以有一個測試點過不去
- 十年OI一場空,開了long long見祖宗 //同上
- 十年OI一場空,SPFA見祖宗 //SPFA演算法複雜度為O(km),但是在某些
特殊構造( )的資料上會退化到 O(nm) - 十年OI一場空,先做T1見祖宗。//見上
- 十年OI一場空,沒加特判見祖宗。//CSP-S 2020 T2存在$n=0,k=64$的情況,會爆unsigned long long
- 十年OI一場空,因為檔案見祖宗。//NOI系列競賽需要使用檔案輸入輸出,而如果檔案名書寫錯誤或沒寫就會失掉整題的分。
- 十年OI一場空,沒寫高精見祖宗。//NOIP 2020 T1 會爆ull,必須寫高精度CCF的精度限制一年比一年高,快進到(ry不過這題好像很水,打暴力都能過
這句話中的o年OI一場空也可以省略。
太皺的紙飛機飛不遠
出自NOI 2022的宣傳片。
其中一位小姑娘拿着一張被弄的皺皺巴巴的捲紙併疊成了紙飛機扔了出去,字幕上寫着「太皺的紙飛機飛不遠」。
有眼尖的OIer發現這被糟蹋的卷子正是隔壁物理競賽決賽的模擬卷。#ccf把物競題疊紙飛機扔# #CCF正式對CPS開戰#
rp++
rp是「人品」的縮寫,代指運氣;++
是C語言家族中的自加號(+1)。OI圈內常用rp++祝福自己或他人在比賽時能人品爆發。
當然這也成為了OI教師們鍛煉陷害學生的理由,比如「你下課打掃一下機房吧,rp++。」
類似的用法還有rp++;
、rp--;
(詛咒他人人品下降或用於吐槽自己或他人過於非酋)、while(1) rp++;
、「rp爆unsigned long long」等爆完不就變零了嗎?(悲)。
A+B
“ | 輸入兩個整數 $a,b$,輸出它們的和 | ” |
——A+B Problem[6] |
由於實現極為簡單,故常作為OJ的試機題,以使新用戶熟悉OJ的操作。
因為非常簡單,所以經常被巨佬們亂搞,成為史上做法最多的題。
現也可以在假時使用。
說句閒話:研究xx的最好方法是/oo將會臭名昭著
此為OI圈的一個成句,來自於洛谷上uke同志抄襲題解後發的帖,他在帖中侮辱管理員和洛谷,導致他如願以償地被棕名(已變回藍名)。由於洛谷的幾乎所有管理員回覆了該帖,它成為洛谷史上最大管理員狂歡,它在OI圈中廣泛傳播,至今仍有人考古,也有人模仿它的格式發帖和回覆。
全家桶
全家桶,可以用於形容所有成系列的題集,但最常用於形容各式多項式相關題目。因為多項式相關題目數量較大,且難度評級很高,洛谷曾下調過一批多項式題目的難度,引起了相當程度的討論。
用法舉例:
- 做多項式題就像嗑藥,出多項式題就像販毒。—— 某 FJ 知名 OI 選手
OI中常出現的人物
Farmer John
Farmer John是USACO題目的通配角色。USACO最大工具人
USACO每套題必會出現的人物,其工具人效果超出任何一類題目中的角色。
每天都要干農活,養無數的奶牛,有時還會被奶牛坑。
像是大多數的OI(如NOIp和CSP)中的人物名字都是換着來的,只有USACO是在反覆迫害Farmer John。
現在已經成為眾多OIer的迫害物件,在洛谷等用戶可出題OJ被廣為流傳。
Bessie
Bessie也是USACO題目的通配角色。USACO第二大工具人
USACO題目中大量出現的人物奶牛。
每天都在干一些奇奇怪怪的事,比如去DQ打工,找Farmer John要打工錢,帶領奶牛暴動。
Bessie出現的題都會加倍迫害Farmer John。
其他通配角色
- 洛谷原創角色
- 小A
- Uim(伍伊姆)
- 八尾勇
- 正妹
- JOI君
- Bessie
- 金明
- Vani
- 高橋君(AtCoder的迫害物件)
- Alice&Bob
常出現的ACG角色
其他
OI數字梗
- 32767
- 215-1。16bit帶符號整數(C/C++:
int16_t
),(C/C++:[7],(Pascal:short
)integer
)的最大值。
- 215-1。16bit帶符號整數(C/C++:
- 65535
- 216-1。早期許多程式的資料採用16bit無符號整數(C/C++:
uint16_t
)。有時發生計算錯誤,得到本來不該有的-1(下限溢位出),而-1在16bit無符號整數中就會變成這個值。同時亦為16位元二進制最大數。[8]
- 216-1。早期許多程式的資料採用16bit無符號整數(C/C++:
- 998244353 = (119 << 23) + 1
- 神秘的UOJ素數,僅次於1e9 + 7的存在對應最小原根是3,適合
N T T( )。不是你們想的那個意思 - 有的毒瘤出題人immortalCO會寫成998244853然後轉成圖片格式坑人。
- 某些題目51nod的甚至會把它寫成99824353然後讓人當場暴斃。
- 甚至有出題人洛谷P6392把它寫成998344353。前面兩個數都是素數,這個數不是素數,998344353=3* 1237* 269023。
- LOJ也有類似的大概比這更甚毒瘤題目LOJ162(對沒錯,還是道模板題)寫成998244352.(但這道題並不是著名毒瘤nzhtl1477出的。)
- 神秘的UOJ素數,僅次於1e9 + 7的存在對應最小原根是3,適合
- 1e9+7 = 1000000007
- 最常見的取模素數,出沒於大量的演算法競賽題中。
- 0x3f3f3f3f = 1061109567
- 同時滿足「每8位元相同」「兩倍在int範圍內」兩個要求的最大數,常常被作為無窮大使用。
- 0x5f3759df 或 0x5f375a86
- 以十六進制表示的所謂的「魔術常數」,是牛頓迭代法開根號倒數的最優猜測值。
- 0x5f3759df即十進制的1597463007
- 0x5f375a86即十進制的1597463174
- 2147483647
- 231-1。32bit帶符號整數(C/C++:
int32_t,或大部分IDE中的int
)的最大值,會被一些無聊的程式設計師當作無窮大使用。
- 231-1。32bit帶符號整數(C/C++:
- 4294967296
- 232。有時4294967295=232-1會作為32bit無符號整數(C/C++:
uint32_t
)的最大值。
- 232。有時4294967295=232-1會作為32bit無符號整數(C/C++:
- 68539
- 二進制為0b10000101110111011,即0x10BBB,且為素數。[9]
- 9223372036854775807
- 263-1。64bit帶符號整數(C/C++:
int64_t
)的最大值。可是由於這個數太大,很少被留意
- 263-1。64bit帶符號整數(C/C++:
- 18446744073709551615
- 264-1。64bit無符號整數(C/C++:
uint64_t
)的最大值。也是64位元系統的最大可用內存大小。
- 264-1。64bit無符號整數(C/C++:
OI中的ASCII藝術
註釋和外部連結
- ↑ zhwp:蒟蒻
- ↑ 簡單的闡述一下,就是SPFA演算法消耗的時間有可能在極端情況成為一般情況的數千倍,相比之下同樣可以使用的Dijkstra演算法則不會有此特性。
- ↑ 停辦通知
- ↑ 【FMT#9】洛谷 Fan Meeting Live #9 回放 第3:23秒
- ↑ 重辦通知
- ↑ https://www.luogu.com.cn/problem/P1001
- ↑ 在少部分電腦系統和其他一些機器中,C/C++ short不為16bit
- ↑ 二補數 (英文)Two's complement
- ↑ http://cn.numberworld.info/68539