来源信息
作者:羽汀摘汐
Pixiv 原文:小说 22802578
Pixiv 收藏数:226
Pixiv 标签:くすぐり / 中国语 / 挠脚心 / 女の子 / 拘束 / 中文 / 原创 / 青春 / 都市 / 挠痒痒
【洒满阳光的房间】
题目描述
给出两个字符串s1和s2,若 s1的区间[l, r]子串与s2完全相同,则称s2在s1中出现了。
现在请你求出s2在s1中所有出现的位置,保证1 < |s1|, |s2| < 10^6,s1, s2中均只含大写英文字母。
教室里还是很闷热,我捋一把被汗液沾湿的头发;风扇刚送来几丝凉风,就又匆匆转头,朝向其他方向。
我内心里小小地吐槽了几句句抠门的学校和教练不肯给这里安装空调,然后重新抬起头来,再次阅读屏幕里这串死板的文字。
“看起来总像是做过一样,上个月的那次小测我好像遇到过这个题目?”我用小指轻拨键盘,把死气沉沉的题目pdf切换到空无一物的代码ide,雪一样白的屏幕上,我和那根跳动的小竖线对视起来。
“总之,先判个空,然后写一个for……”我把手指放回键盘上,摸着两个食指下熟悉的凸起,不规律地连续敲击起来:“先循环这个s1字符串,然后在里面循环s2,if一下,如果发现两个不相同,那就break……”
没有蝉鸣,只有嗡嗡作响的机箱风扇、没有凉凉的汽水,只有教练离开讲台下来巡视的脚步;我把键盘敲地震天响,仿佛这样就能像鞭炮一样,把所有恶龙般恐怖的题目统统吓跑。所幸我的程序除了少一个分号外没有大碍,编译成功后几组构造的数据也全部顺利通过。
夏天的阳光强烈似火,下午四五时左右坐在窗户朝西的教室时最甚,金色的光芒似乎被镜片的夹角被分解成三色,继而在眼前绘出绚丽的彩虹,而我还要继续检查代码,再把更多的样例输入进来测试……
【漆黑无光的房间】
“洛,你真的不记得KMP算法?”
迷迷糊糊,有人在问我东西。
“洛,你这样写的时间复杂度是多少,足够处理一百万长度的数据吗?”
没有光明,眼前一片漆黑,我试着从椅子上站起,却发现腿已经被捆在椅子上。
“洛,回答我,上午你是不是没有听课?”
“苇?!发生什么了?这是哪儿?!”我像是落入狼穴中惊醒的兔子。
“洛,你的代码错了,但你不知道错在哪儿。”
“苇!这是哪儿!你放我下来!”
没有回应了,面前亮起一条竖缝,又拉宽成一扇门,门的光芒下,苇的背影出现,又消失,接着门也变窄,唯一的光芒就此逝去。
“题目:给定字符串s1、s2,求出s2在s1中出现的所有位置。”
大荧幕亮了,我似乎坐在一个电影院里,但看到的东西却是白天的题目。
“用例1:s1=NSNS,s2=NS,开始执行。”
“这是我编的……第一个用例吗……?”
来不及多想,左脚传来了触电般的感觉,我的脸唰一下红了——我没穿鞋子?
“哇啊!不要呜!”
伴随着我的悲鸣而来的,是我右脚的痒感。我能认得出来,这是长长的指甲从拇指下方凸出的球状嫩肉开始,斜着划下来,像是从山丘上驶下的汽车,狠狠将轮胎滚过名为脚心的沙漠,尘土飞扬,笑声回荡。
漫长的旅行在脚后跟结束,我大口喘息。是苇做的?但是他已经离开房间了呀,为什么我会被捆在这里受谁指甲这样划过呢?
“s1[0]=N, s2[0]=N -> j++”
“s1和s2……难不成……”我的心跳加速起来,果然接下来我的左脚有什么柔软的东西贴了上来。
是手指,一道竖线软软的从脚底的一侧抚摸下来,接着连着在另一侧画出两个圈。
“噗嘻嘻嘻嘻……喂,忍不住的……”
接下来是右脚,同样软软的滑动,这种感觉没有刚刚的指甲那么糟糕,我甚至还有点享受这种轻柔的抚摸,尽管会稍微有点想笑出声,但这样两个圈滑过总能让我有种暖暖的感觉涌上心来。
“s1[1]=S, s2[1]=S, len(s2)=2=j+1, ans_array[ans_cnt]=i=0, ans_cnt++”
“也就是说我现在在评测我的程序咯~”
想明白这件事,我心中反而多了一丝慰藉——毕竟又没有太过分的事情,这种程度充其量小孩子玩玩游戏罢了。我干脆放弃了挣扎,还微微张了一下脚趾,像是伸了个懒腰,等待下一次攻击的来临。
“嘻嘻嘻,不公平吧,指甲的明明更痒痒一点呀!”我晃晃脚掌,小小的抗议了一下,刚刚那一下左脚是指头抚摸,而右脚则是一下尖锐的指甲刮挠,而再下一次应该两边都是要用指甲了。
“噗哈哈哈哈!不许刮脚心!你们对本小姐的程序有什么不满意嘛!”如果不是被捆着,我就两手叉起腰来了,用例1很快就顺利通过,我开始思考起苇的去向:“KMP算法?时间复杂度?早上的课那么早,昨晚又玩手机到很晚,我睡过去应该也没有什么损失吧。”
“用例2:s1=SSNNSSNSF, s2=SNSF,开始执行。”
“N是nail,指甲,S是soft,柔软的,那么F是什么呢?”这么想着,我的左脚迎来了第一下:“噗哈哈!有点提示好不好嘛!这样很突然的……哇啊!好痒!”
左脚一下,右脚一下,接着又是左脚一下,我不禁挣扎了一下:“过哈哈哈哈哈过分了呀哈哈哈哈……”
脚底操作的速度快了上来,左脚的感觉刚刚结束,右脚的感觉就又拂了上来,像是由调试期转向测试期的代码,迎来的是一波又一波更加激烈的暴风骤雨。
“s1[7]=S, s2[2]=S -> j++”
程序的操作越来越快,左右两根手指同时触上我的脚心,我腹部的肌肉狠狠收缩了一下,把笑声和骂声从肺里吐出来,但是我的好奇心被提到了嗓子眼:F究竟是什么呢?Finger手指?Fur毛绒?不会是Frozen什么冰冷的东西吧……
一串穿插在坚硬细棍上的软毛窜进了我的脚趾缝,我的脚趾竟先一步我的大脑紧紧将其夹住,接着才是我没能忍住的小小的惊叹:“噗嗤!是Feather羽毛吧!怎么还往脚趾缝……哇啊别别别别抽出来嘻嘻嘻嘻嘻嘻嘻……”
我的脚趾夹得再紧也不能阻拦这跟羽毛被硬生生拽出来,像这样紧紧贴着指缝间的神经把羽毛拽出来,也许比狠狠敞开脚趾让其尽情刮挠一下更痒痒?啊,右脚还会有一下,让我在这之前把脚趾缝开大……噗哈哈哈哈哈!又夹紧了!我艰难地敞开脚趾让这根坏坏的绒毛溜出去,反而觉得它在一寸神经上调皮地多戳了一些,像是从森林里穿过的人,再小心躲避身上会留下苍耳的种子和迷路的蚂蚁。
这怎么忍得住的呜……
“s1[8]=F, s2[3]=F, len(s2)=4=j+1, ans_array[ans_cnt]=i=5, ans_cnt++,len(s1)=9,用例2已通过。”
这道题的用例有几组呢?有的题目是5组,大部分是10组,有些丧心病狂的出题人则喜欢用超过20组——让题目的得分更加均匀;不过有些外国人热衷于用自己精心编写的用例去让他人的程序得出错误的答案,他们称此为“hack”,这种精心毁坏别人辛苦建造的城堡的行为在我看来有些过分,可如果像我一样坐在这里不肯乖乖发出笑声、还像刚刚一样时不时咒骂两句,会让人很想“hack”一下吧?
“用例3:s1=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, s2=FFFFFFFFFF,开始执行。”
“喂喂喂,什么变态这么喜欢羽毛?干脆住到鸡窝好不好?”我对自己的程序可太有信心了,上次考试可是所有用例全部通过。坐在这儿扮演人工智能的我此时也多少有了些底气,再多招数,能痒死我不成?
“噗嘻嘻嘻嘻!快起来了嘻嘻嘻……”
左右两片羽毛这次不再心慈手软,而是径直几片塞满我的左右脚趾缝,像是熟练的钢琴手一样弹奏起来,左大趾和左二趾之间抽动一下,同时右脚同样位置也轻搔一下,接着是二趾和三趾、右脚同理,笑声如琴声一样在我嘴里荡漾起来;一根胶带“贴心”地从趾尖处将我的一排脚趾齐刷刷地贴在什么东西上面,我猜我的脚趾现在一定像是排列整齐、等待检阅的士兵,长官从他们面前经过,向每一名战友敬礼。羽毛钻进我的趾缝在里面打个旋再出来,荧幕上的文字快速闪烁,像是在记下每一个我发出的音节。
“哈哈哈哈哈哈哈嘻嘻嘻嘻哈哈哈还来哈哈哈哈哈……到哈哈哈哈哈多少了唔哈哈哈哈哈……”
“s1[19]=F, s2[4]=F, len(s2)=5=j+1, ans_array[ans_cnt]=10, ans_cnt++, len(s1)=20,用例3已通过。”
我笑得有些没力气,这次“折磨”的时间比前一次长了五倍还多,明明我脚上感受到的运算速度已经加快许多了,怎么会这样?
几天前的一个晚上,学长给我们找来了排序算法可视化视频,归并排序唰唰几下就把乱七八糟的竖线排成了几组递增的小三角,接着又随意几步,一个大三角就从左向右依次绘制了出来;而后面展示的冒泡排序,只能将这些无规律的白色竖线缓慢的一根一根像提溜兔子一样提溜到最右边。
“这难道就是……苇刚刚说的时间复杂度?”
一次计算字符串是否相同,最多要匹配len(s2)次。
“用例4……”
那么我需要计算的次数是len(s1)次。
“s1=FFFFF……(len=10^6)”
所以这个用例,我需要执行s1*s2次,两个大数相乘时,指数相加。
“s2=FFFFF……(len=10^4)”
相加等于10^10,也就是100亿次。
“开始……”
等!等一下!还有余地!s1不会被遍历到最后一个,s2遇到错误时也会停止!
“执……”
一台计算机一秒可以计算10亿左右,所以这里能不能勉强让……
“行。”
“让我通过!呜哇哈哈哈哈哈哈哈哈哈哈不哈哈哈哈哈哈这样哈哈哈哈哈哈哈哈哈不信哈哈哈哈哈哈哈……”
“s1[723]=F, s2[723]=F -> j++”
“哈哈哈哈哈哈哈我哈哈哈哈哈我不能哈哈哈哈哈……”
“s1[999]=F, s2[999]=F, ans_array[ans_cnt]=i=0, ans_cnt++,len(s1)=1000000”
“不哈哈哈哈不哈哈哈哈哈哈会死哈哈哈哈哈哈哈哈哈……”
“s1[2488]=F, s2[176]=F -> j++”
“救哈哈哈哈哈哈哈救救我哈哈哈哈哈哈谁来救哈哈哈哈救我一下哈哈哈哈哈……”
“s1[30713]=F, s2[465]=F -> j++”
“哈哈哈哈哈救哈哈哈哈哈……救我呼呼呼呼……”
我再也笑不出任何声音,所有过去犯下的错误如同时间之矢,穿越时光,射向现在的我,我必须吃下我自己种的苦果。
“s1[84267]=F, s2[74……致命错误,Time Limit Exceeded,程序结束。”
荧幕熄灭,漆黑的房间再也看不到任何影子,连我的脉搏声都逐渐寂静。
【人造灯光的房间】
“哇啊!……”
我从工位下的行军床上惊醒,身子挺直,头不慎撞在桌角上,痛像开了个窟窿,空调的冷风快速蒸发掉我脑门的汗液,捂着头顶新伤口的我看起来如此狼狈,同事有的劝我小心点,有的上来查看伤势,有的则帮我倒了一杯水。
我叫洛,在晴空塔上的格子间里工作,我是M项目的高级算法工程师。回忆起来,那间教室是我高中时信息学奥赛的教室。
昨晚又通宵睡公司了,这么干下去要犯精神病的,刚刚那个梦就是印证。我摇摇头,用纸巾吸干额角的汗水,我折叠起行军床坐回桌子前,一天的工作即将开始,掀开电脑屏幕,我的思绪又飘回了那些被刺眼阳光照耀的下午。
苇是我高中时一同学习的同学,他戴着眼睛,身上的衣服散发着洗衣粉的花香,头发在靠前位置凸起一个尖尖的角,他的成绩很好,尤其擅长物理,也善于和我一同来钻研这些算法和代码,他笑起来很灿烂,牙齿上尽管戴着牙套,但我一直期待有一天他会把牙套摘下,露出洁白的两排牙齿。
“洛,你写了两重循环,用外循环的次数乘以内循环的次数,得到的就是你程序的运算次数,比如两次循环的次数都是n,我们就把时间复杂度称之为O(n^2)。”
“不太好理解,两个循环不应该就是两个N么噗哈哈哈不许偷袭我!”
苇的手顺势摸上了我的肋骨:“我捏一遍你的肋骨,需要捏多少下?”
“哈哈哈哈哈十哈哈哈十二下!”
“那我现在说:我要捏十二遍,你一共被捏多少下?”
“十哈哈哈十二乘十二哈哈哈哈哈……”
“多少下呀?”他笑眯眯地看着我,牙齿闪闪发亮,手指一节一节地从我柔软的肋间捏过去,而数学不是很好的我不记得这个常用乘方的结果。
“一百二十加哈哈哈哈加哈哈二四哈哈哈哈你这么捏我算哈哈哈哈算不过来了哈哈哈哈哈……”
“喂,你们两个又在打情骂俏!”一旁同学也笑着看向我们这边。爱,尤其是男女之间的爱,在这个年龄段还是一种禁忌的毒药。
“我哈哈哈哈我大概理解了哈哈哈哈哈……”
“明白啦?”他收了手,屏幕上的书页下翻几段:“这种时候,我们往往采用一种叫做分治的思想来问题。”
“你左边挠一下右边挠一下还是很痒啊……”我小声地吐槽着。
“我先找你左边哪根肋骨最怕,再去找你右边哪根肋骨哪根肋骨最怕,最后再比较一下,就可以得到整体问题的答案了呀~”
“能不能不要用这么变态的方式来找呀!”嘴上这样说着,但我不会讨厌他的咸猪手这样伸上来。
“那我这样如何呀?”他的手捏住了我的芊芊细腰,在上面跳起舞步。
“哇变态啊哈哈哈哈哈哈哈哈哈哈……”
“还骂?胳肢胳肢胳肢~”
我一直觉得他是爱我的,把这种羞耻的游戏当作他爱的表达;我从未向他表白过,他也偶尔会用过分亲昵的称呼替换我的名字,我们就这样在这个不合理的年龄贪婪地攫取着爱,舔舐着我们不受家长和老师们不予肯定的蜜糖。
“喂,洛,你想什么呢?”同事的话语打断了我的思绪。
“走么?我们都吃完了。”
“你吃了一会儿就这么呆呆的坐着,一会还要做下我们新的那个需求那个方案呢。”
“啊,对不起对不起,我刚刚在想事情。”我急忙道歉,端起餐盘和同事一同离开座位。
【洒满阳光的房间】
……保证1 < |s1|, |s2| < 10^6,s1, s2中均只含大写英文字母。
屏幕上是熟悉的题目,炎热的房间里,我的身子却不由自主发起抖来。
“快做题呀,你在愣什么神?”
“先去把输入输出写了呀!”
“先开个数组嘛!”
内心的催促声将我推上前去。
手不由自主放在键盘上,食指摸着两条细细的凸起,肌肉记忆控制着他们敲击起来:左小指按住一旁较大的按键,中指去触碰靠上的一排、右手飞速运转,夹杂左手中指从下到上依次按键、小指再次按住,右手中指去触摸一个不怎么使用的符号、左手全速运转,没有自动补全的ide只能靠我的全拼……
算法怎么写?算法怎么写?黑板旁的时针哒哒作响、屏幕右下的数字又增一位,黑色框框的光标快速闪动,一切都在催我更快的给出答案、给出一个更快的答案。
“分……分治!分治!求你了!分治!”
我离开main函数,转手另起一个方法,思绪漂离岸边,如小船一般驶向未知的岛屿;在这小岛上,红色和蓝色的花儿开得鲜艳却又杂乱无章,冥冥中我却能浅浅几道把它们把划分成块。
叮叮咚咚,键盘响声像潺潺流水,我也终于有头绪将一地的碎片打扫成堆,再将他们一一归位。
【漆黑无光的房间】
“洛,你为什么不用KMP算法?”
……第二次在这里醒来,我的时间复杂度明明达标了呀!
“洛,你的算法不对。”
“苇?我又哪里做错了?!”
“分治法的确可以降低复杂度,但是你确定你没有看漏些什么吗?”
“我看漏了什么……”
没有回应了,熟悉的一条亮缝,熟悉的门的光芒,熟悉的苇的背影,接着又全部消失了,空留我一人在这个漆黑的房间里对着荧幕。
“用例1:s1=FCCFCCFB, s2=CCFB,开始执行。”
按我刚刚写的程序,我会先拆分字符串,看左边有没有答案,看右边有没有答案,最后再看左右有没有可能有重复的部分,如果足够理想,我只需要计算log2(N)次循环,每次循环N次。
不过这是,我会更好奇一点C和B分别都是什么。
“l=0, r=3, s1[l]=F, s2[l]=C”
是二分法,先取左边一段,也就得出了l=0,r=3,羽毛这次则是径直塞进了我的趾缝。
“有……有点痒……”
这次比起上次有了不小的进步,我能够勉强忍住,比起细软的毛,中间那根较硬的、叶脉一样的结构带着缕缕绒毛抚过的一刹反而更让我起鸡皮疙瘩。
暗自庆幸自己吃硬不吃软,谁想到右脚就迎来了尖锐的一下:沾满软刺的、微微有些热却又顺滑的感觉擦过我的脚心,甚至像是留下了什么液体。
“哇哈哈哈哈哈哈哈!这样痒痒哇!”
是Cat猫吧!生物课上,老师说过猫的舌头是有软刺的,这样更符合他们舔毛的习性,可谁能想到这东西还可以用在脚心上!
“停一下!s1[1]=C,s2[1]=C,还要再来两下!”
“不!不要!”
程序的运行不受人生理上感觉的阻碍,它只会伸出温暖的、带着尖刺的小舌头,沾着猫口水的在你脚心上好好剐蹭一番,每一根倒刺对付一寸足底的纹路,像是一群勤劳的清洁工把脚心每一丝嫩肉给清洗干净。
“哇啊哈哈哈哈哈哈哈太哈哈哈哈太痒了哈哈哈哈……”
程序不再温柔有序的进行,而是开启了疯狂模式,两片猫舌在左右脚底快速舞动起来,中间夹杂着羽毛从趾根像梳子一样梳过,手指偶尔也会就着猫舌留下的黏糊的口水在上面舞动几下。
空气中除了我爆裂开的大笑声,还夹杂着一阵奇怪的嗡嗡声,下一秒,一组旋转极快的、略硬的刷毛迎上了我的拇趾中心。
“哇哈哈哈哈哈哈哈哈!牙哈哈哈哈哈哈牙刷哈哈哈哈哈……”
Brush刷子,这里用了牙刷来做替代,而且还是电动的!这些刷毛像是鳄鱼一样狠狠咬上我脚趾上的肉,在上面重重拧了一把,有点像羽毛落下,但却极其集中,他带来的感觉更接近把数百根数千根羽毛全部聚焦在这一点,然后猛烈把痒感扭出来。
“哈哈哈哈哈哈哈不要哈哈哈哈哈哈……”
“用例2:s1=CBFCBFCBFCBF……(len=3×10^5)”
等等,被我忽略的,就是这个场景吗?
“s2=CBFCBFCBFCBF……(len=3×10^4)”
如果用分治法,一层层处理的时间复杂度的确只要log2(N),但是要是每一次层能够匹配多个字符串呢?
“开始执行。”
“算法退化了!退化成O(N^2)了!”
我拼命挣扎起来,但是时候已晚,刷毛、倒刺、羽毛已经纷纷贴了上来。
率先运作的是猫舌,它们盯紧脚心,用温暖的触感和略显尖锐的小刺给脚心涂满润滑;刷子和羽毛决定一同运作,嗡嗡作响的牙刷就着还未消散的温暖触感贴上来,一下竟痒了数倍起来,脚趾处的羽毛也不再试探,而是尽情上下扫动,扩大面积到前脚掌和趾尖。
“唔哈哈哈哈哈哈哈哈哈不要哈哈哈哈哈哈……只哈哈哈哈哈哈只是做错了道题哈哈哈哈哈哈不要这样……”
我不记得后面的事了,磨人的牙刷尽情在我脚上左蹭蹭右刷刷,还嫌效率不够高一口气来了四五根,脚掌逐渐也被无数猫舌包裹,连每条脚趾缝里都被塞满了羽毛……是好几根!
“不哈哈哈哈哈不哈哈哈哈哈哈哈哈哈哈我哈哈哈哈哈哈……”
我感到我肺内的空气在逐渐被挤压干净,火辣辣的感觉涌入胸腔,面前的荧幕也愈发模糊。
“l=450000, r=487500, s1[466872]=C, s2[1……致命错误,Time Limit Exceeded,程序结束。”
【人造灯光的房间】
写字楼明明建的很高,窗户又都是落地窗,但大家往往爱把窗帘拉得紧紧的,用头顶的灯光照明。虽然看也看得清,但是据说视力不好的一大原因就是太阳光接触的太少吧。
时值下午两点,我拿着牙刷在洗手台上刷起了牙。
大家往往会抱怨说洗手间的位置本来就很少,在洗手间刷牙非常影响使用效率,所以我后来就换成了这只会嗡嗡响的电动牙刷,反正大家不会嫌弃这里噪音大影响工作。
不过我刷一次牙的时间比起洗一次手来还是很长。
现在我反而有些鄙视这根电动牙刷,一定和刚刚那个奇怪的梦有关。
反正下午还要开会,我匆匆停下电动牙刷,赶快漱下口,接着洗两把脸让自己清醒一下,就去抱起电脑跑去会议室。
“这个需求的重点是,我们希望用户能够离线使用,也就是说不经过我们的后台,只在终端上就能完成这个搜索。”
“那为什么不让终端来做这个需求呢?”一旁的技术总监先一步发话。
“终端能力有限,这个搜索策略过于复杂,所以希望算法大佬们能帮帮。”终端组长也走上前去,在白板上画起来:“我们最好的方案也达到了10^13的复杂度,这样根本不能实现这个功能……”
“我们的模型占用内存太大了,很难客户端上直接运行,还要考虑设备发热……”
“所以希望你们能不能帮忙压缩一下模型,如果不能的话,给我们一些传统算法的建议也可以考虑。”
“专家系统?”技术总监喝了一口咖啡。
“额,专家系统更偏向解决询问的问题,我们希望有一些算法能够优化掉我们技术方案中最耗时的部分,比如有一种叫做KMP算法的传统方法……”
“我明白你们的意思了,这需要我们来编写代码打包成一个基础的二进制库提供给终端使用?”
“嗯,最好是这样,还需要支持热更新能力,以满足产品的变更。”
“哈哈哈,我们可不会这个,又想要不走后台,又想要热更新,这才是你们终端要维护的大问题呀!”
“打包成二进制下发也是可以的吧……”
“那你们给个下发方案呀……”
KMP算法是苇给我讲过的,他给我讲过好几次,可惜我很笨,几次下来都没有太听会,什么失败指针,什么前后缀,硬生生背下来也会忘记,于是也就日复一日地听他讲。
那个夹杂着嗡嗡风扇声、粉色泡泡还有苇的手指的夏天逐渐过去,而教室里也来了新的面孔,也终于有人会叫我学姐,让我给他们讲题了。
镜就是新生里的一员,她不像我留着利落的短发,而是扎起了令人羡慕的长马尾,头发略略带点黄色,但是没有染过,无框的圆眼镜在她脸上显得更加俏皮可爱;她熟悉我们看的动漫,也聪明伶俐,求我们讲题时会甜甜地喊学长学姐,我们大家都很喜欢她。
她时常会看着我和苇的互动在一旁姨母笑:她会在一旁用青涩的笔记录下他给我讲题的样子,书写下我和他玩闹时开下的玩笑,描绘下我和他课间一同在学校的小湖边散步的背影。
我也就这样和他们两个一起轻松的敲着键盘,谱着青春乐章;和苇一起讨论着今天的题目、帮镜调整她代码里会出错的地方、和他俩在周末趁老师不在翻找出藏起的桌游,摆放小人和图块。
直到这一天,教练安排了一次培训,班里大部分人去外地和其他学校的竞赛生一起交流经验,而我和另外几个学长则留下单独梳理起竞赛资料,不经意间一股奇怪的感觉涌上了我的心头:苇和镜经常一起侃侃而谈,可他已经连续一两周没有像以前一样给我讲过题了。
和苇打的几个招呼被他随意敷衍过去,我不明白自己为什么要自讨苦吃,不甘心地敲下一行字。
“你是不是和镜好上了?”
聊天窗口旁边的小人没有动作,他的名字变成“对方正在输入……”,然后只有一行冰冷的字发回来:“我和她好上管你什么事?”
有时世界的崩塌不需要什么惊天动地,我眼里有什么东西涌出来了:“那我呢?”
“我什么时候宣布和你在一起过吗?”
眼泪啪嗒啪嗒落在桌上,教室里没有纸巾,高三的学长在一旁用电脑偷偷看动漫,教室里黑着灯,防止有领导突然出现来视察。
“我不明白,为什么?”
“你之前都那样叫我了。”
“我在你眼里究竟是什么人?”
Time Limit Exceeded
他从未爱过我。
人失去了自己重要的东西,就会开始思考更加哲学的问题,我趴在桌上悄声哭着,一边哭一边问旁边的学长为什么人会有爱情,而动物只有发情期、为什么人失去了痛苦到想打开窗户跳下去,而动物只会舔舔伤口然后继续生活、为什么人不可以放弃自己的身份,不能变成动物一样浑浑噩噩活下去……
苇应该也是怕痒的,他的皮肤很细嫩。
培训结束后的第一天,我照常来到教室,从门上的玻璃看到强壮的同级同学一左一右举高了苇的手,而苇坐在椅子上,在镜的坏笑声里左右躲着捏向他腰间的纤纤细手,一旁的同学则笑着:“你们玩捆绑play也就算了,怎么还拿X同学来当道具……”接着,就是房间里嬉笑着的打闹声。
我摇摇头,没有敲门,也没有进教室,世界是属于他们两个的,而我已经不再属于这里了。
我回到一间空教室里,用纸笔推演起来。
KMP算法的核心在于失败指针,字符串的精密在于前缀后缀;我需要为s2构造数组、构造过程又用到递归匹配……
在这一刻,我突然发现,算法这个东西更像是要自己去“悟”,有一天你悟到了它的精髓,才能真的掌握它。从书上看,学不到精巧之处,听别人讲,不过是死记硬背,用键盘敲,单纯是把不属于自己的想法用不属于自己的语言去说一遍,比起木讷的处理器,更僵硬的反而是我自己。
【洒满阳光的房间】
保证1 < |s1|, |s2| < 10^6,s1, s2中均只含大写英文字母。
还是KMP算法吗?我这次竟有了几分自信。
首先,用s2推导失败指针数组。
为求失败指针数组,递推解决,用后缀匹配前缀。
如果找到了,那么失败数组的位置等于匹配长度。
最后写匹配算法,失败时顺着失败指针往回找,这样虽然看似二重循环,但实际上失败的位置每经过N个字符才能达到N,失败指针最多也只会走N次,时间复杂度其实是2N。
精妙绝伦。
我自测了用例,点击了提交。
【漆黑无光的房间】
“苇!你为什么要把我关在这儿!我明明和你没有任何关系了!”
“哼哼,你自己弄懂的算法?开什么玩笑,在你第一次听我讲题时你就弄懂了,你单纯只是想多粘我一会儿。”
“你胡说!是我自己推明白的!就是那天晚上……”我感到我身上的绳子愈来愈紧,这次连我的腿也被拉高放在了桌上。
“那就让我看看你的代码究竟是对是错。”
“用例1:s1=BCCTSTHWGOOBBCTS……(len=10^6),s2=NSSHNOONTOTTSTBBB……(len=10^4)”
“不哈哈哈哈哈哈不啊哈哈哈哈哈哈哈哈哈……”
Nail指甲 Soft指腹 Cat猫舌 Brush电动牙刷 Tongue舌头 Gloves手套 Oil润滑油 Wheel带刺的轮子……
“哈哈哈哈哈哈哈不哈哈哈哈哈哈哈哈哈不要哈哈哈哈哈……”
无数道具爬满我的右脚底,这是在计算失败指针……并试图让我品尝失败的苦涩。
“记哈哈哈哈哈记不住哈哈哈哈哈……”
学长教过我,内存以外有一个CPU的多级缓存,一般是三级,类似人脑的短期记忆,如果记不住,就需要用纸笔写下来,这就是内存。
“腿哈哈哈哈哈哈腿是什么东西哈哈哈哈哈哈……”
我明确的能感到大腿上有略硬材质的东西在写下什么,莫名的恶心感攀上我的大腿,竟把脚底的痒逼退了几分。
“记录你的失败指针。”
我一下明白过来了,苇正拿着马克笔我的大腿上写字,弥补我短期记忆的缺陷。
“哈哈哈哈哈哈哈哈哈你哈哈哈哈哈哈你变态哈哈哈哈哈……”
“不是我变态,是因为你是个笨蛋。”
“……哈哈哈哈哈哈哈哈哈哈哈哈你哈哈哈哈哈你这个渣男哈哈哈哈哈哈……”憋在我心胸里几年的情感倾泻而出,那时的我是祝福他和镜的,因为我不希望他不幸福,可现在已经远离那段日子的我却完全明白了我心底对他的评价,也是他最应该得到的评价。
“哈哈哈哈哈哈哈……渣哈哈哈哈哈哈渣男哈哈哈哈哈哈……你找我哈哈哈哈哈哈只是为了哈哈哈哈弥补心里的哈哈哈哈哈……”
脚底的手指胡乱划拉,牙刷嗡嗡,钻心的痒,可我的思绪反而比前两次坠入这里更加清晰。
即便猫舌和人的舌头裹住我的脚趾,我这一刻似乎也不再害怕,尽管嘴里的笑声和咒骂无法停下,但是我这一刻知道,我绝不会失败,终点就在眼前。
我的腿间飞速的写满一行又一行字后终于停止,右脚的痒感也停下,我咽了口唾沫:左脚也要来了,而且s1的字符串长度,是s2的100倍。
“咿哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈这么哈哈哈哈哈哈这么痒哈哈哈哈哈哈哈……”
痒感爆发了,如果我认为右脚上的痒感已经是极限那就错了,左脚被道具层层裹满,连一滴水都无法穿过他们抵达我的皮肤;而腿上的笔迹也已干透,没有其他东西再来分担我的痒感,这就是名为我——洛的机器在疾速运转的灼热!
道具的配合天衣无缝,苇一定在这种变态的爱好上有着令人发指的钻研:柔软的东西、坚硬的东西、旋转的东西、温暖的东西,轮流在脚底每一个不同的点施虐,每当我能够逐渐习惯一种痒感,道具就能更换成另一种,把我神经所能留下的几丝余地给挤压殆尽。
“s1[999999]=T, print(ans_array, ans_cnt),全部用例已通过。”
“哈啊……哈……”到底我还是从这次的酷刑中活了下来,喘着粗气,脚底被摩擦太多后留下少许生痛的感觉,这恰恰是我还活着的证明。
“苇!你放了我!我才不要和你在一起!”我拼尽最后的力气大喊,却迟迟没有回应,我只能听到自己的回声在漆黑的房间里回荡。
还差什么,一定还差什么。
You are being hacked.
“什么?”
“hack用例:s1=TTTTT……(len=10^6-1), s2=TTTTTTTTTT……(len=10^6)”
“变态!变态变态变态!”
苇想尽情用他的舌头品尝我的足,才会给出这么恶心的用例。
“呜啊——!变态变态变态!”
舌头并不是很痒,但是带着大量人的口水的舌头贴在右脚上让我觉得很恶心,更别说是他的,我努力让自己不笑出声,并用最恶毒的语言大声咒骂着他:“变态!阳痿男!就会勾搭不一样女孩子的阳痿渣男……”
但是,当s2的输入结束后,我腿上又一次涂满墨汁后,我突然意识到了不对的点:hack的用例,s1却短于s2,苇,他难道真的有什么打算?
时间到了,左脚也开始收到舌头的侵蚀,唾液这次却像是强酸在腐蚀我的意志,这场口水盛宴反而有种比前面的综合考验更难受的感觉,为什么,到底为什么?
“s1[896657]=T”
我不由看向了下标的数字,感到一丝不对劲。
“s1[947142]=T”
“哈哈哈哈……痒哈哈哈痒痒……”
越到末尾越痒,好像我的神经系统正触碰到什么边界。
“s1[999766]=T”
“等哈哈哈哈哈哈哈哈哈哈等一下哈哈哈哈哈哈哈哈哈……”
我的心跳加速,我突然意识到,痒感再这样指数膨胀下去,我会被一下击溃。
“s1[999998]=T”
“不哈哈哈哈哈哈哈哈哈哈不……”
下一次会是我无法忍受之痒,我确定。
“s1[99……”
“停哈哈哈哈哈停下来哈哈哈哈哈哈哈哈哈哈哈哈,我什么都愿意做哈哈哈哈哈……”
“9999……”
“不……不要了……求你了……”
“再走一步的话……”
“我会……”
“]=……”
“砰”
我的头重重砸在椅背上,这股痒不是攀上我的脚心,而是直接凭空爆裂在我的脑中:我先是感到了无法忍受的巨痒,接着才去下意识去扭动我的被缚进的脚——明明没有任何东西在上面。
“]=……SIGSEGV,致命错误,Runtime Error,程序结束。”
【人造灯光的房间】
“洛!你怎么睡着了!”
“哇……”醒来的瞬间意识到我还在会议室,极快的反应速度让我捂紧嘴巴,所幸这里已经只剩我和另一个还在收拾东西的同事了。
“不过,洛,你睡着的样子我不仔细看都发现不了。”
那当然,我上学的时候就深谙上课睡觉之术,每天早上甚至还能举着书睡着,老师怎么巡逻都看不出来。
“会议纪要我发到你邮箱了哦,虽然也没什么很重要的东西。”
“啊!太感谢啦~”在手机上感谢完同事的好意,一封邮件就弹出在我的屏幕上方:
会议纪要:
算法侧负责提供C++代码格式提供,终端提供C2JS编译器转换为js代码动态下发,以达成热更新目的;算法暂定使用KMP思想,但拓宽单字匹配广度,少许字符(不超过2个)失配时也可匹配成功,一切算法不允许经由后台,仅可下发配置文件。
还是KMP算法呀。
自我那天晚上参透它后,我就没有再来过奥赛教室了;之后没过多久就是省赛,镜刚学习没多久,教练也就没允许她去参加比赛,我坐在大巴的后座上戴着耳机,呆呆地望着苇洁白的短袖校服,愣愣地闻着若有若无的洗衣粉香,他考前的白天坐着公交车去市里的书店看书,而我和其他几个同学跑去教室里借着电源把算法书翻了一遍又一遍;最后他的成绩没过线——我不知道是否是有意的,而我拿到奖状后就此退役,一头扎进枯燥无味的语文数学英语中,熬过了高中剩余的一年半。
我是不恨镜的,她没有做错什么,毕业之后我去联系她,她却告诉我她和苇已经结束了——苇从小就有一个青梅竹马,一离开高中,苇就丢下了小他一级的镜,去和他儿时的那个青梅竹马一同去了很远的另一个大学。
镜曾经对我说:她对她的经历并不意外,因为早在看到我被苇这样甩掉时,她就知道自己的下场会是如此;但她没想到,苇会这么绝情,在她高三开学的那一天这样告诉她,连伪装都不肯伪装一下。
想起这些,我敲开了镜的聊天窗口——她现在和我在同一个城市工作。
“镜,我今天做了好几个连起来的奇怪的梦,都梦到苇了。”
“天哪,宝宝,你还好吗,害怕吗༼ つ ◕_◕ ༽つ”
“我梦到有个题不会,他就一直在折磨我呜呜。”
“还是那个吗(。ヘ°)”
“是啊,还能是哪个。”
“妈呀,下次见到让我揍死他(♯▼皿▼)”
“噗,没事没事,看起来已经快结局了!而且是好的!”
“呜呜呜辛苦你了宝宝(´-ω-`( _ _ )”
“嘿嘿,其实我现在略微有点期待结局~”
“结局?你已经拿到关键道具了嘛?刀?枪?还是什么宝贝(((o(゚▽゚)o)))”
“噗,只是会做这个题了而已。”
“很难的嘛?下次梦也许会忘哦(´•͈ुω•͈ू`)”
“不会的不会的,就裸的KMP算法而已。”
“哈哈哈哈哈你已经是大算法工程师啦这种题目你在梦里还能不会做!啊对啦!我的KMP算法还是你给我讲的来着!゚・✿ヾ╲(。◕‿◕。)╱✿・゚”
“咦,还有这回事吗?”
“对呀!高二的那个暑假,我网上问你的,他给我讲了好几次都讲不明白凸(`△´+)”
沉默半响,原来是我不是唯一一个听不懂他讲这个题啊……
“哇啊不说了我主管来了!”
好惨,我只好暗地里祝镜那边好运,回头看向电脑。
“叮咚!”
啊,有短信。
“【X团】您的朋友预定‘XXXX音乐餐吧’!22:00 大厅 2人,座位最多保留30分钟。”
噗,是镜预约的房间,看来她的主管还是很温柔呀。
“没说完的今晚来喝酒说呀,还是我家楼下那家,有小熊形状的灯那一家!(ฅ’ω’d)♥”我仿佛看到镜的消息发过来了。
【教室】
又来?我睁开眼睛,上次有数组越界风险的代码还在我屏幕上。
“我倒是不讨厌写代码,但是又要被苇玩一次是真的很不爽啊!梦里也很不爽!”
我重重地敲下回车键,把那一行的问题修复掉。
“洛!键盘声不要敲这么大!”
“哇啊!”时隔多年,教练的声音还是能吓得我一颤:“好……好的,对不起,刚做这个题有点得意忘形了……”
真是的,我都已经工作了好几年了,虽然我不太承认我的头衔前面能加个“高级”,但总不至于还能这么怕老师哇……
随着我敲下最后一个分号,周边的灯光逐渐暗淡下去,连太阳都急匆匆的,月亮还未接班就快快的赶下山去,整个教室就这样陷入一片漆黑。
“啪嗒、啪嗒、啪嗒、啪嗒。”
“苇,你还不肯放弃吗?”只听他的脚步声我知道是他。
“你为什么觉得我会放弃呢?我会抓住你的每一个弱点。”男人的声音听起来似乎带着狞笑。
“我已经在是晴空塔上,做M项目的算法工程师了。”
“那你不会已经没有弱点了吧?”他的声音逼近,我感到我的脚被人用手握住。
“……恶心。”我咒骂一句,试着动了动身子,果然和前几次一样,绳子已经不知在何时攀上了我的身躯。
“你就打算用这个打败我?”他似乎有一双能看透黑夜的眼睛,我程序里的每一个字符都逃不过他的眼睛。
“你又能如何呢?”我反问他:“你又能如何打败我呢?”
“哼,就这样吧。”熟悉的门打开、身形消失、门关上。
“就这样吧。”我已经不再畏惧即将而来的暴风骤雨,他不应该从这个领域来进攻我。
“用例1:s1=BCCCBCBBBC……(len=10^6),s2=CCBCBCCCBC……(len=10^4)”
“上来就拿这个进攻?”
数根带着尖刺的舌头扑上我的右脚,几只牙刷带着颤动卷入其中。
“噗哈哈哈哈哈哈你哈哈哈哈哈你就这点哈哈哈哈哈哈本事吗哈哈哈哈哈哈……”
苇犯了个错误,这个组合起初痒的过分,猫舌的多刺和牙刷的聚焦两者可以连续带来让人发疯的痒感,继续下去,唾液的加成和温暖的抚慰还能给牙刷的刺激更上一个台阶,但是如果硬撑过最开始的巨痒,剩下的努力反而开始过之不及——两种刺激都偏坚硬,肆虐久了反而脚底像是长出了茧子,再也不怕。
而我刚好有信心撑过开头。
“哈哈哈哈哈哈哈哈哈哈哈哈哈哈你哈哈哈哈哈你死足控哈哈哈哈哈哈哈……”
苇的虐待在言语的刺激下更加变本加厉,原先较痒的手法此时像是和我较劲一样用上了力气,反而让剐蹭感更加严重,痒的感觉下降了。
“哈哈哈哈哈哈哈……死哈哈哈哈哈哈哈去死哈哈哈哈……”
我不断地继续咒骂着,不过我也慢慢习惯这些痒感了,大腿上唰唰几笔写着什么,那我其实不太在意——醒来就会消失了,又不会很难受,随他去吧。
“s1[999999]=B, print(ans_array, ans_cnt),用例通过。”
“再来啊!再来!”
“用例2:s1=TTTTT……(len=10^6-1), s2=TTTTTTTTTT……(len=10^6)”
“哈!是你这个变态的hack用例吗?来!帮本小姐把脚舔干净!本小姐今晚要去见重要的人,你每一丝缝都不许给我放过!”
“s1<s2, print(0),用例通过。”
“哈?”
哦,我忘记了,我刚刚的代码是判断完了长度就直接给结果了,不用给本小姐舔脚可算便宜这小子了。
不过对于这种不知廉耻的死人来说,不让他舔反而更能让他不爽吧?
我抖抖脚趾,管他呢,不管怎么说这一轮也是我赢了!
“用例3:s1=SBBOOBOSSB……(len=10^6),s2=BBBOOBSSBS……(len=10^4)”
“哎呀,这个用例好过分呀~”我冷冷地撒娇:“用牙刷也就算了,手指还上油的,摸不到我脚底嫩肉的真实感觉,你真的不觉得暴殄天物吗~?”
按镜的说法,苇是喜欢涂油的,他更喜欢追求怎么让人觉得更痒,所以他才设计了这么一个用例吧,全是让人痒的要发疯的道具和辅助器材;但是他太多注重了道具的左右,而更少关心了心的建设。
“咿哈哈哈哈哈哈哈哈哈哈哈哈哈!哈哈哈哈哈哈……”
这次的言语攻击没什么效果了,这几个东西组合起来就是很痒,换成苇曾经去过的那些奇怪店铺里的店员,也很难忍住不崩溃,不过我有了个好办法。
“咿啊啊啊啊啊啊啊啊啊啊啊啊啊!啊啊啊啊啊啊!哼!噗哈哈哈哈哈哈哈哈哈……唔啊啊啊啊啊啊!”
转笑声为疯狂的叫声,让自己看起来像是失控了一样,苇不喜欢这样吧?
果然手指的速度慢了下来,他这么爱听笑声的人,怎么忍心女孩子把嗓子喊哑还不笑出来呢?不过牙刷的档位最低也是很痒的,只能稍微忍受一下了。
“s1[999999]=O, print(ans_array, ans_cnt),用例通过。”
“哈!笨蛋!最后一个操作还是倒油,浪费啦!”
“用例4:s1=BHCWWGHWGO……(len=10^6),s2=BNNSOBWSBG……(len=10^4)”
“用例5:s1=BCCWWWNNGW……(len=10^6),s2=WNWNWNWNWN……(len=10^4)”
“用例6……”
“用例7……”
“……”
不知是不是对我一开始的话有了阴影,苇后面几次连舌头都不肯用了,几副随机的挠痒序列虽然难忍,但在我程序的保护下我知道自己不可能输,也就没什么好畏惧的。终于过完全部用例,我身上的绳子也没被解开。
You are being hacked.
“什么?”
我上次就是被这个打败的,难不成我还有漏洞?
“hack用例:s1= NNNNNNNNNN……(len=10^100), s2=NNNNNNNNNN……(len=10^100)”
“你几岁了?!还用这种东西来作弊!哈?”我的声音努力提高到最大分贝,但由于刚刚笑的太多有些嘶哑。
“有什么作弊的?”
“你的数据超出范围了!”
“但是用例可以进行。”
“两个10的100次方,文件达到1.82×10^88TB大!”
“但是我放进去了。”
“你这样违规!”我声嘶力竭。
“违规又怎么样,我才是这个世界的神,你们这些不要脸的小婊子,整天还往我这儿凑,不过是被我随便把玩的玩具罢了!”
“你即便是神,你也不能扭转世界的规律!”我咬紧牙关,缩紧脚底的肌肉:“逻辑的0和1不会因为你的客观意志而违背,即便是神,你也不能改变它们!10的100次方,即便是今天最强大的硬盘,读入时间也超过6×10^82年!直至宇宙尽头!”
“那又怎么样!我是神!我掌管这个世界,我!要!你!死!”
真的要直到宇宙尽头了吗?即便我知道他不可能违反客观规律,但我绝不敢保证他不会对我下死手。我闭上眼睛,等待着最后拥抱我的究竟会是何物。
“轰!”
“哇啊!痛!”
“绿……绿的……Accept?”
教室漆黑的窗外逐渐绘制出摩天楼的灯光、楼顶闪闪的红灯、天空中缓缓划过的黄点、还有旁边灯红酒绿的招牌。
我的额头今天第二次撞到什么东西了,所幸这个好像很软,不会造成什么伤害。
“小姐,到了,你怎么没系安全带啊!”
“啊……绿的……Accept……?”
“鹅什么色谱,你车钱还没付呢!付钱!”司机把绿色的二维码在我眼前晃了晃。
“啊啊啊啊!对不起,不小心睡着了。”我揉揉脑袋,赶快扫码付钱,谢过司机后,下车走进了镜下午订的这家酒吧。
“这里这里!”镜坐在角落里的桌子旁朝我挥手,棕色的小熊灯照亮了桌面和她颈部的项链,然后转头向酒保挥挥手:“我要尼格罗尼,和以前一样,狠狠地加苦!洛,你和以前一样要姜汁汽水加一点金酒吗?”
“哈哈,我这次要杯烈一点的,给我杯飞行吧,Aviation,樱桃一定要甜一点哦~”
坐定位置,镜先开口了。
“洛,真巧,我也有个劲爆消息,苇这家伙下周要结婚欸!”
“啊?你被邀请啦?他怎么不邀请我?”
“哈!怎么可能!是我们这一级另一个小学妹告诉我的,她不知道后来这几档子事,还问我去不去哩!”
“啊,你们那一级的学妹?那我还真不认识几个。”
“切!这个死人,谁跟他谁倒霉!”
“对哦,是愿意跟谁啊?”
“雪呗,还能是谁。”
“哦哦哦,他那个青梅竹马!”我没和雪见过几面,也不记得她的名字,“她不嫌弃他到处去找荤的?”
“她不那么在意,不过也可能会在意,这样结婚说不定就是想让他安分点儿。”
“唉,好惨。”
酒保把我们的酒放在面前,橙色的暖光下,紫色的液体微微泛起粉色。
“你的梦有结果了吗?”镜舔了几口她杯子里的尼格罗尼,眨巴着眼睛问起今天的主要话题。
“还不错,这个狗东西最后还想靠作弊赢我,他掏出来一个巨大的用例,可惜……”
“可惜数学/算法是不变的。”
“哈哈哈哈哈哈!”我们两人给出了一样的答案,然后一同大笑起来。
“总之,为了庆祝胜利,干杯!”
“干杯!”
我们举杯,她一口气吨下了三分之一杯烈酒,而我只小啜了一口就皱皱眉头,差点咽不下去。
“好喝么?”
“嗯,还挺香的,樱桃的回味相当妙!就是太呛了,要慢慢喝。”
“哈哈哈,短饮就是要一口下去才香啊!”她脸上有了两分红晕:“怎么样,是不是姐姐经常在家里帮你这么玩,你才受的住呀~”
我红了脸:“噫!才……才没有!而且……我比你大吧小镜学妹!”
她笑了:“你没有我能喝呀,小妹妹~上次在床上,姐姐把你……”
“喂喂喂!小声点!”我恨不得上去捂住她的嘴。
“嘿嘿……”
不得不说,苇带来的也不全是坏事,比如认识了镜,比如有了这种小爱好,比如自学了算法,还不小心成了个算法工程师……
“喂,酒保,再来一杯金汤力,柠檬要用香水柠檬哦!”
“镜,喝太快啦!一会要把你扛回去啦!”
“真的嘛?”她坐来我旁边的位置,一把搂住我的肩膀:“猜猜最后要被扛回去的是谁呢?”
“唔……”
“这里离我家这么近,你要小心别被坏女人吃掉哦~”她的手不老实地摸上我的腰,上上下下揉捏起其中的嫩肉。
“喂镜嘻嘻嘻嘻嘻这么多人……”
“是吗,那一会跟姐姐回去之后姐姐可要把你的小脚丫……”
“停……停一下呀……要被听到啦……”
“嘿嘿!我们家小洛真可爱!”镜这次喝的好像有点快了,她嘴里呼出的气体带着橙子的香味,夹杂着丝丝苦味和草药……一般叫做草本香。她很突然地用软软的唇在我脸颊边啾了一口,像是酒精还没消散,凉飕飕,又火辣辣的。
“您的金汤力,足足加了两颗柠檬哦!”
“哇~谢谢你帅气的小哥哥!”镜倚在椅背上用吸管吮吸了起来。
“呐,镜~”
“怎么啦?”
“你说,如果把我们的酒用什么方法优化成子串,最长匹配的有多少呢?”
“噗哈哈哈哈哈,大工程师!放弃你脑子里理性的部分,为什么要解构酒这么美妙的东西呢!”
“有吗?我只是顺其自然的这样想而已。”我又啜了一口杯中的紫色液体,紫罗兰的香气充盈了我的身体,我也像是要飞行起来一般。
“连酒和爱都要消失的世界,多么可怜呀!”
“酒不会消失的,所有原始文明最早的发明之一就是酒哦!”
“可是没有爱的世界有很多——”
镜拖长声音,一把抱住我。
少许眩晕感攀上我的脑门,我闭上眼睛眼睛依偎进她怀里,我知道她在心里说道:“还好你一个人就是许多爱啦~!”