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