推荐一个网站
2026-10-31 09:34:37
发布于:浙江
同学创建的一个校园网站
校外人员参加也无妨
社区链接
这里空空如也
2026-10-31 09:34:37
发布于:浙江
同学创建的一个校园网站
校外人员参加也无妨
社区链接
这里空空如也

AC君赶快把我禁言
AC君,请赶快将我禁言,我的信息如下: > 个人信息 > 我为什么要禁言 > 禁言要求 愿AC君尽快查收 > 彩蛋

X的日记
写在前面 老吸说,好的文章离不开日复一日的积累,然而作者的语言组织能力堪比一根成年香蕉,写写日记倒是可以锻炼锻炼文笔,顺便记录一些生活中的琐碎,也方便日后细细品味,因此,以下的所有内容都不含AI的成分,文笔生疏,不喜勿喷 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 10.23 上午 物理老师我爱你 全校的物理课,我们班进度是最慢的了,可能到了期中考试课都上不完,更别说复习了,肥美的物理老师在每次上课前先花10min散布心灵鸡汤鼓舞士气,5min赞美同学2min赞美自己2min赞美太阳,才开始上课。。请给我一个进度不慢的理由。。 更神的来了,伪善的物理老师口口声声的说着,自己不爱占课,从不占课,却毫不犹豫的停掉了我们仅剩的体育音乐,不是说不能占课,事到如今,不得不占,但是你嘴上说着正义的话,却做着相反的事,是不是有点恶心了,,反思一下自己吧,少说废话,多干正事,这才是别人上的又快又好的诀窍,都是初中生了,不需要你的鸡汤,该怎么学、是否该好好学大家心知肚明,真正不思进取也听不进去,所以几句话根本就改变不了什么 晚上 今天晚自习发生了一件非常恶劣的事,是这样的:当时我和同桌正在与作业进行激烈的斗争,一只苍蝇忽然飞到了我的作业上,呃呃呃我也是心生爱慕了啊用我尊贵的手反复挥动试图将它赶走,可是这只苍蝇不但对我的动作置之不理,还悠哉悠哉的搓起了手和屁股,我一下子就怒了啊,这分明是在挑衅我的权威,于是拿出一张面巾纸啪的一下把他拍在作业本上,同桌深感同情,将它担到了地上。。这时愧疚感油然而生,我赶忙下地查看,那只苍蝇的四肢还在不停的抽动着,还好,它没死,只是刚刚被拍晕了。。 最恶劣的来了,同嘬鬼点子生成中。。。用圆规的尖端残忍的扎进了它的身体,力道刚刚好,没有把他扎死,反而将它提了起来,苍蝇仿佛察觉到了危险,四肢抽动的更剧烈了,无力的挣扎着(这里是地狱吗)。。同嘬就把那只圆规静静的架在桌角,像一只罪恶的艺术品(这里是地狱吗。。。我的心被大大的震撼了,生命不该这样被践踏,更何况杀生不虐生,要么就给个痛快,要么就让它继续活着(作者是圣母)怎么办怎么办,今晚要被苍蝇托梦了,功德-1 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 10.24 饿啊今天早上起来头好晕啊,不会生病了吧,没招了撑着吧还有作业要写呢 下午去上课,不不不这段时间是我一天中状态最差的时候了,头微微发热,可能发烧了,还有点犯恶心,没办法,靠不了任何人,继续撑着,题都不会写了,脑子一片空白,只想快点结束。 晚上 终于熬完了,我爱你们所有人 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 10.25 真想穿越到小学炸鱼啊,今天突然想起了小学举办的辩论赛,辩题是“少年识得/不识愁滋味”,我是反方,记得正方举了一个例子来反驳我们的观点,大概是一个乡下的孩子从小就很懂事最后考上了某名牌大学,未完待续我爱你们,B不想写了,烂尾了 别急别急,晚上还有很多事 又是索然无味的一天,全天唯一的亮点就是从课外班回家的路上吃了一家路边摊,味道不错,服务到位,五星好评,图待会放。。 ok,图找到了以下是对菜品的评价: * 图片上方是一碗肥美幸福饭,里面有些牛肉、几坨牛油果、淋了一些血红色的不明液体(大概率是红烩酱)、一个很嫩的鸡蛋,要把鸡蛋戳破了拌着吃,口感一般 * 中间是一碗肥美的牛肉河粉,服了,粉是辣的,我吃不得,给浮木吃去)浮木的地位( * 左下角是牛肉饭,牛肉七分熟,口感一般,并不是太惊艳 总之菜不贵,期望也没太高,整体还是不错的(一共花了30RMB) 回去的时候看到这一幕:一群熊孩子推搡着一个穿着充气玩偶的人类(做广告的那种人,大家应该都见过),这种小孩家长真的该管管,小孩子不懂事很正常,但是家长要尽自己的责任才行,换位思考一下,玩偶里的打工人应该很绝望吧,又热又闷又狭窄,还要时刻保持衡防平摔倒。。。唉 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 10.26 无事发生 又是凡的平一天 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 10.28 鲁迅真的是一个很伟大的人,今天学到了他的文章《故乡》,对于其中的一些句子很是喜欢 “我在朦胧中,眼前展开一片海边碧绿的沙地来,上面是深蓝的天空中挂着一轮金黄的圆月。我想:希望本是无所谓有,无所谓无的。这正如地上的路; 其实地上本没有路,走的人多了,也便成了路其实地上本没有路,走的人多了,也便成了路其实地上本没有路,走的人多了,也便成了路” 这句话有着很深的哲理啊,儿时变听闻过鲁迅先生的这句名言,当时啥也不懂,只是一味的崇拜,现在也有些自己的思考了。。 呃呃呃首先啊这句话运用了比喻的修辞手法,将希望比做了地上的路,(呃呃呃套话不想写了,写点感悟吧) * 知识分子的深刻反省 * 需要许许多多的人共同努力 * 仅仅具有崇高的理想是不够的,还需要无所畏惧的实践、行动(实则是老师上课笔记。。自爆了( ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 10.29 学习狗子的大爱无疆/bx ,见到活人就说我爱你,得到了大家的一致好评 唉,班上那些超标怪怎么都那么强,反观我,多么平庸又猎奇的一个人。。。 今天晚自习,作业很多,但还是有几个大佬写完了家庭作业,并在我们绝望之时写完了n篇课外。。。就很好奇哈,他们是怎么做到又快又好的?换我们『物理老尸』的话说,他们是怎么做到功率大,效率高的?这对我们来说,似乎很令人费解,但是在,他们看来,只是基操罢了。。 于是,我越来越不相信,天赋是可以靠努力超越的了。天赋就像一座地基,有了地基不建房,永远也不见成果;但是没有这地基,你连建房的机会都没有。。曾经那个信心满满的小将,已经在一次次磨难中,越发的挫败了,温水煮了将军梦,也许,梦就该这样结束了吗,希望不是吧,人生才刚刚开始,还有很多美丽的事和物等着我们去发现,不能因此就失了士气哦 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 10.30 旁边好像有商场着火了,不清楚,我爸说来的路上看到好几辆救火车和救护车,貌似挺严重的 �� 10.31 今天是亲戚家小屁孩的生日,作业那么多还要去参加倒霉生日会,坐标新街口,人多堵车停车费又贵,搞得我心中满是怨气,路上途径总统府,看到了南京为数不多的劳斯莱斯门店,里面停了一辆,但是由于车子太贵,这家店无人问津,破败不堪,好像门都锁了,可能已经濒临倒闭了,惨惨 ?!蒋的诞辰?!**********,一个魔丸呱呱坠地了吗,)花园口决堤( 11.2 我对生活越来越没有希望了 没有什么能提起我的兴趣了,我的脑子里全是堆积如山的作业 我的意识被抽空了,每天都像活在梦中,日记的内容,只会越来越单薄,越来越素然无味了,日子还有盼头吗,太累了,老师,全是,丧心病狂 甚至有点希望三日凌空的末日早些来临吧,把我连同这个肥美的世界打扫干净, 世界裸着来,终将裸着去吧(猎奇 唉,回忆好久,竟然不能在漫长的一天中掘出点乐子,可悲至极... --无不良引导 11.3 事情也没那么糟

呵呵
有什么东西是这样死的?再往下翻之前,你先思考一下。 等会儿怎么上榜了?


获奖证明
@日历午后🎶 @wcqk🦐 傻。逼


关于我一不小心发了4200个罐头
如题所示,我这一生如履薄冰,还是不小心操作失误,给嘻哈赛第10期的前200名同学发了4200个罐头(本来应该是平分的),被通知竟然无法撤回,请同学们好好对待这笔横财,如果还有下期,我一定不会发错了 所以有时间参加嘻哈赛的同学欢迎每期参加


社区现状
活动详情见大大大大大活动! 社区已经露出了许多弊端,ACGO若在现况下不做出有效的措施,再怎么改革都无法获得满意的结果。此情形永远得不到改变,ACGO将持续没落,直至衰亡。以下为社区现状: 一、 由于某种神秘原因,现在的竞赛都出现了“CSP模拟”的名字,结束时间极其逆天。或许官方想让比赛的选手们先做完比赛的试题,然后放松身心后在下一天紧张的打开ACGO查看自己的排名?有点神圣。


爱你
写给你的一封长信 亲爱的你: 展信安。 写下这几个字的时候,我的手是抖的。这封信,我在心里写了很多遍,白天写,夜里写,走在你身后的时候写,坐在人群里隔着老远看你的时候写。每一次都在开头停住,不知道该用哪一个称呼,才配得上你在我心里这么久、这么深的位置。最后我还是用了最笨的一个——亲爱的。这三个字在我舌尖搁了无数个日夜,今天终于敢落下来。落下来之后,我忽然觉得,天亮了。 我知道,当你看完这封信,我们之间的关系可能会从此不一样。我做好了这个准备。我不是一时冲动,不是少年心气,不是被某个黄昏的光晕晃了眼。我是用这些年来积攒的、数不清的偷偷看你的瞬间,一个字一个字地,把心捧到你面前的。你可以看完,可以慢慢想,可以拒绝,可以当作什么都没发生——但我不能不让你知道。因为有些话,再不说,我怕我会遗憾一辈子。 这是一封很长很长的信。请你原谅我的啰嗦。这些话在我心里憋得太久了,它们像春天的河流,冰化了,拦不住了。 一、第一次遇见你 我想先跟你说说,我是怎么认识你的。 说来惭愧,真正与你初见的那一天,具体是什么天气,我已经记不太清了。只记得是一个很普通的日子,普通的云,普通的风,连阳光都是漫不经心的那种。可就是在那样的普通里,你出现了。你大概没有注意到我,因为那天你太明亮了,明亮的眼睛里根本没装得下这个世界的旁观者。而我,只一眼,就被那样的明亮定在了原地。 我记得你穿着浅色的衣服,风把你的头发吹起来了一点,你笑了一下——是对着旁人笑的,与我无关。可就是那个不经意的笑,像一根细小的针,轻轻扎进我心里,从此没有拔出来过。我后来想,这世上大概真有那样一种时刻,一个人出现,不是来与你擦肩的,是来让你的世界从此有了一个永远明亮的方向的。你就是那样的时刻。 从那之后,我就有了一个秘密。一个只属于我自己的、甜蜜又酸涩的秘密。我开始留意你,留意你会出现在哪里,留意你的作息,留意你爱喝什么,留意你笑起来的弧度。我像一个笨拙的、偷偷藏糖的孩子,把关于你的每一点细节都小心翼翼地收进口袋,谁也不给看,只在夜深人静的时候,一个人偷偷拿出来,一颗一颗地数,一颗一颗地甜。 现在想来,那大概就是喜欢了吧。可那时候的我傻,我不知道那就是喜欢。我只觉得,看到你我高兴,看不到你我失落;你笑我也跟着开心,你皱眉我心里就发紧。我以为那是好奇,是对一个耀眼的人的欣赏。后来我才明白,欣赏里藏着喜欢,喜欢里藏着无法宣之于口的深,深到连自己都不敢承认。 二、暗恋是一场漫长的独白 暗恋是什么滋味呢? 我想了很久,想怎么跟你说。它大概就像,你在人群里,手里攥着一束花,隔着一条街,看着对面那扇亮着灯的窗。你想走过去敲门,把花递进去,可你不敢,因为你怕门开了之后,窗边坐着的不是你期待的那个人,或者,怕窗里的人根本不记得,街对面的花,是为你开的。 暗恋是这世上最孤独的一种爱。它没有回音,没有应许,没有对手戏。它是一场漫长而沉默的独白,从头到尾,只有我一个人在台上。可奇妙的是,一个人演久了,竟也渐渐有了完整的悲欢。我在你面前,把最真实的自己藏起来,藏成一个若无其事的、不远不近的朋友,一个恰好出现在你生活里、又恰好懂得分寸的人。我陪你聊天,陪你笑,听你说你的烦恼,为你出那些我自己都未必做得到的主意。我像一个演员,演技好得连我自己都快信了——信我们只是普通的朋友,信**近你,只是因为你是个值得交往的人。 可只有我自己知道,每一次与你说话,我要在心里排练多少遍;每一句看似轻描淡写的回复,背后压着多少汹涌。我把汹涌全部摁下去,只露给你平静的海面。我怕浪太大,吓到你,更怕你看穿之后,我们连现在这样的距离都没有了。 于是,我习惯了在你不知道的地方,悄悄看你。 你看书的时候,阳光落在你的侧脸上,睫毛在脸颊投下一小片阴影,那样安静,那样好。你讲话的时候,眼睛里有一种认真的光,讲到开心处,眉眼都弯起来,那一刻我总想,要是这世界所有的好,都集中在一个瞬间,大概就是你现在这个样子。你低头走路的时候,步子不快不慢,偶尔会停下来看一朵花、看一只路过的小猫,你不知道,那些瞬间,比很多惊天动地的热闹,都更让我着迷。 可暗恋的苦,也恰恰就藏在这些甜的瞬间里。因为我爱你,你却不知道;因为我每一次偷看你,心里都同时盛着满满的欢喜和满满的委屈。我欢喜,是因为又看见了你;我委屈,是因为看见了你,却离你那样远。我像一个站在你花园墙外的人,隔着墙闻到你花开的香气,看得见那一角探出的红,却始终走不进那扇门。香是真的,美是真的,可是那份触不到的酸楚,也是真的。 我常常在夜里想,如果有一天,我能光明正大地站在你面前,不用再躲闪你的目光,不用再藏起自己的心跳,那该是多好的一件事。我想象过一千遍那样的场景,每一次都想象得热泪盈眶。可第二天醒来,我还是那个不动声色的、守在你身边不远不近处的人。我把所有汹涌,都藏进云淡风轻的外壳里,只在无人看见的角落,让它们放肆地涨潮、退潮。 这样的日子,过了很久很久。久到我几乎以为,我会带着这份秘密的喜欢,安静地、不惊动任何人地,过完与你相遇的整个人生。 我像一个收集星星的人,在漫长的时光里,把关于你的光,一颗一颗地收进心里。我的心里,就这样被你一点一点地点亮了。亮到我终于骗不了自己——那不是欣赏,不是好奇,那是喜欢,是很深很深的喜欢。 三、我喜欢你的什么 你可能想问,你到底喜欢我什么? 这个问题,我自己也问过自己很多遍。我想过很多答案,可每一个答案都太单薄,配不上你在我心里的重量。最后我放弃了分条罗列。因为喜欢一个人,从来不是因为某一个理由,而是因为,她是她。你是你。这世上只有一个你,而我,恰好把整颗心都交给了这个独一无二的你。 可是,如果你一定要我试着说一说,那我可以跟你说几个瞬间。 我喜欢你认真做事的样子。不管是大事情还是小事情,你都做得那样专注,那样投入。你沉浸在自己的世界里时,周围的一切都成了背景,而你是那个世界唯一的主角。我看着那样的你,总觉得有一种说不清的力量,从你身上安静地漫出来,让人安心,让人相信,这世上所有难的事,只要像你这样认真地去做,就总会有结果。 我喜欢你笑起来的样子。你的笑有好几种,有浅浅的、礼貌的笑,有被逗到忍俊不禁的、捂嘴的笑,有真正开心到毫无防备的、眼睛都弯成月牙的笑。每一种我都在心里悄悄存了底片。可我最喜欢的,是你不经意间露出的那种笑——你根本不知道自己笑了,那一刻的笑容最真、最好看,好看到我总在心里默默祈祷,愿你一生都常有这样的笑容。 我喜欢你的善良。你对这个世界有一种天然的、不设防的善意。你会注意到别人没注意到的小事,会在别人窘迫时不动声色地解围,会为了一点点微不足道的温暖而感动。你不知道,那些被你善意照拂过的人里,最贪心的一个,是我。我甚至嫉妒过那些被你善待的陌生人——他们何德何能,能分到你那么多好。可随即我又庆幸,庆幸我爱的,是这样好的一个人。 我喜欢你的坚持。你有你自己的原则,有你不肯将就的东西,有你认定就要走下去的路。你偶尔也脆弱,也迷茫,也想过放弃,但骨子里,你从不真正认输。我喜欢看你咬着牙、红着眼、却偏不肯倒下去的样子。那样倔强的你,像一株在风里不肯弯折的树,让我总想站到你的旁边,做你身边那片愿意陪你一起扛风挡雨的土地。 我喜欢你的清醒。你从来不盲目,不盲从,你用自己的眼睛看世界,用自己的心做判断。你不会轻易被别人的话带走,也不会因为热闹就去凑那份热闹。你有一种难得的、属于自己的频率。而我,恰好在这一整个喧嚣的人间,独独听懂了你的频率。 我还喜欢你的小任性、小固执、小脾气,喜欢你偶尔的依赖,喜欢你犯懒时那一点点理直气壮的孩子气。我喜欢你所有的、真实的样子,连你身上的小缺点都喜欢。因为那些缺点让你成为一个具体的、可触碰的人,而不是一个我够不着的幻影。它们让我知道,我爱的不是一张完美的画,而是一个会哭会笑、会累会痛、真实地活在这人间的你。 其实我自己也说不清,这份喜欢,究竟是从哪一个具体的瞬间长出来的。也许是第一次看见你笑的时候,也许是某一次你无意间看向我、让我心跳漏了一拍的时候,也许是某天你随口说的一句话,正好落进我心里最软的那个位置的时候。我喜欢那种说不清来处的感觉——它不是某个特定的理由凑成的,而是像江南的梅雨,不知不觉,就把整座心城都浸透了,等我回过神来,这里到处都已经是你了。所以我才会说,我爱你,爱的是全部的、完整的、独一无二的你。不是因为你有哪一点最好,而是因为——你是你。 四、那些我偷偷记住的细节 暗恋的人,都是最称职的记录员。我们记下的事,往往小得连当事人都未必记得。 我记得你第一次在我面前提到你喜欢的东西时,眼睛里那种藏不住的亮。从那之后,我便开始悄悄留意所有与它有关的东西,想着哪一天,能跟你说上一句“我也懂这个”,好让你对我多一点点亲切。 我记得你某次说起,你最怕下雨天一个人走夜路。从那天起,我再看到阴天,心里就会莫名地多一份牵挂,会不自觉地想,你今天带伞了吗,你走的那条路,灯亮不亮。 我记得你曾为一件事难过过。那天你嘴上说没事,可我看出你眼里有雾。我多想说一句“有我在”,可我终究没有立场说。我只能默默地在你身边,假装不经意地,把你爱吃的、能让你高兴的东西递到你面前。看你心情一点一点好起来,我那颗悬着的心,才慢慢落回原位。 我记得你说过,你有一个很小很小的愿望,小到你可能自己都忘了。可我没有忘。我从那天起,就在心里把它记成了一件事,一件我将来若有幸,一定要替你完成的事。 我记得你爱听的歌,记得你喝东西的习惯,记得你对某些日子格外在乎,记得你讲话时的小习惯,记得你喜欢的季节,记得你怕冷,记得你……记得好多好多,多到我自己都觉得好笑。可那些鸡毛蒜皮的细节,在我这里,全都不是鸡毛蒜皮。它们是你的一笔一划,是我在漫长的暗恋里,一点一点临摹出来的、你的完整模样。 我有时会想,一个人要有多喜欢另一个人,才会把她的这些细枝末节,全都当成珍珠一样,一颗一颗地串起来,小心收着。大概是喜欢到,连她一句无心的感叹,都想接住;连她一个无意的小动作,都想记住;连她一点微小的情绪,都放在心尖上。这样想想,我大概已经喜欢你喜欢得,很深很深了。深到我自己都觉得,这哪里是一颗普通的心,分明是一整座装满了你的、沉甸甸的宝藏。 你看,我不止喜欢你,我还这样认真地,记得你的全部。 可我也要坦诚地承认,我所记住的,终究是隔着一层距离的你。真正的你,我还没有机会好好去了解。所以我想趁这封信,也悄悄地问你几件事。这些事,压在我心里很久了。 我想知道,你小时候是什么样子?是那个喜欢在院子里疯跑的孩子,还是安静窝在角落里看书的乖孩子?你童年的夏天是什么样的,有没有什么小小的、到现在还忘不掉的梦想? 我想知道,你难过的时候,最希望别人怎么陪着你?是安安静静听你说话,还是什么都不说,只给你一个拥抱,还是给你一块你喜欢的小点心,让你自己缓一缓?我太想学会了,我怕等我有一天真的有机会陪着你,却因为笨,没陪到点子上。 我想知道,你心里有没有那么一个人、一件事、一段时光,是你想起来就忍不住微笑的?我想听你讲给我听。我想知道你的欢喜,也想分担你的遗憾。 我想知道,你有没有哪一刻,觉得这世界很值得?有没有哪一刻,觉得活着真好?我想知道那些让你觉得值得的瞬间里,有没有那么一点点,也许与我有关。 我想知道的还有很多很多。你的口味,你的习惯,你的边界,你的恐惧,你的热爱,你的天真,你的世故。你的过去我来不及参与,但你的现在和以后,我很想很想,能够亲眼见证、亲手呵护。如果你愿意,我有一辈子的时间,慢慢地、一点点地,把你讲给我听。 五、那些擦肩而过的瞬间 我们之间,有过很多很多次擦肩。那时候我只觉得平常,现在回想起来,每一点都甜得发苦。 我记得有几次,我们明明可以顺路一起走,可话到嘴边,我又咽了回去。我怕走得太近,会让你察觉到什么;又怕走得太远,连这点珍贵的交集都要失去。于是每一次,我都选了那个最稳妥、最不显山露水的距离——不远不近,刚刚好让我能在人群里,多看你几眼。 我记得有一次,你随口问了我一句关于我自己的事。就那一句,我高兴了一整个晚上。原来你也会注意到我,原来在你眼里,我不是完全透明的人。那一点点的“被看见”,在我心里放大成了巨大的光,照亮了我之后很长一段时间的日子。 我也记得,有过那么一两次,你对我笑,比平时多一分亲近。我知道那多半是礼貌,是我多心,可我就是控制不住地、贪婪地,把那一点点温存,在心里反复咀嚼,久久不舍得咽下去。 我还记得那些无疾而终的“险些”。险些开口,险些表白,险些让那句话说出口。每一次“险些”,都像一次小型的心跳加速的冒险,最后都以我落荒而逃告终。我常常恨自己的怯懦,可我又实在舍不得,拿那点含糊的、微小的可能,去赌我们全部的关系。我怕输,我怕连现在这样、能远远看着你的机会,都一起赔进去。 可我现在回头看,才发现那些我以为是“错过”的时刻,其实没有一次是真的错过。因为它们全都不是仓促的、随意的,而是我攒了足够多的勇气、又害怕得不够、于是收回去继续攒的无数次练习。它们没有浪费。正因为有了那无数次的“险些”,我才终于在今天,攒够了勇气,敢把这句话真正地说给你听——原来所有的欲言又止,都是在为这一封不后悔的信,做着长久的、笨拙的准备。 六、患得患失的心事 爱你这件事,让我学会了一件事——原来一个人,可以同时勇敢又懦弱,甜蜜又酸楚,满足又贪婪。 我常想,我大概是这世上最贪心又最不贪心的人。最不贪心,是因为我只要能在人群里看到你,就觉得自己很富足;最贪心,是因为每看到你一次,我就多渴望一点——渴望你多看我一眼,渴望你多记得我一点,渴望有一天,能光明正大地站到你面前,而不是永远躲在你看不见的角落。 我也曾无数次地、没出息地想象过你身边会站着别人。每一次这样想象,我都觉得心脏像被一只看不见的手攥紧,闷得喘不过气。我知道自己没有资格难过,我们没有约定,没有承诺,什么都没有,可我管不住自己的心。它不听劝,它固执地、一心一意地,只认准了你一个人。 我也常怀疑自己。我反复地问自己,我到底配不配,我够不够好,我拿什么,来站到你这样一个闪闪发光的人身边。我把自己从头到脚审视一遍又一遍,挑出自己的各种不好,越想越觉得自卑,越想越觉得无望。可每到快要放弃的时候,你又会在某个瞬间,对我露出那个我收藏了一万遍的笑。于是我又觉得自己行了,又觉得自己可以为你去成为更好的、更好的人。 你就是这样,什么也没做,轻轻松松地,就让我在这爱与自卑之间,来回走了千百万个来回。 后来我慢慢明白,这份患得患失,其实不是软弱,恰恰是深爱的证明。真正爱一个人,才会怕,才会在意,才会患得患失;若无其事、云淡风轻的人,多半是没有动真心的。我多想有一天,能把这些年所有的心酸和欢喜,都亲口讲给你听;也想让你知道,这些曾让我夜里辗转的情绪,没有一分是想要你负担的。它们是我的功课,是我在这段无望的暗恋里,自己跟自己完成的修行。而现在,我把这段修行走到头了——我决定不再自己一个人扛,我决定,把答案的钥匙,交到你手里。 七、为什么偏偏是现在 你一定想问,既然喜欢了这么久,为什么偏偏选在现在告诉你。 因为,我快装不下去了。也因为,我怕再装下去,会错过。 我曾以为,暗恋可以很长久,长久到我慢慢习惯,长久到我把它当成一种安稳的、不打扰的爱。可我渐渐发现我错了。喜欢一个人,是捂不住的。它像春天里破土的芽,再怎么压,也总有一天要顶开泥土,长出来。它又像满溢的水,我再怎么舀,也终究会漫过杯沿。 更重要的是,我越来越清楚地意识到,生命太短了,短到经不起太多“再等等”。我们谁也不知道明天会怎样,谁也说不准下一个路口,还会不会有现在这样的、能够靠近你的机会。我不想在很多年以后,某个深夜忽然想起你,满心都是遗憾——遗憾我明明那么喜欢你,却连一句“我喜欢你”,都没有亲口对你说过。 我宁可现在勇敢一次,把心捧出来,赌一次被你看见的机会。哪怕结局不是我希望的,至少这一生,我没有辜负过这份喜欢,没有辜负过你曾点亮过我的那些日子。 所以,我写了这封信。你大概不知道,写这封信的这几天,我几乎没有睡过一个安稳觉。白天我一遍一遍地删改,删掉那些太过露骨、会吓到你的话,又一遍一遍地添回那些藏不住的心意;夜里我躺在黑暗里,一遍一遍地预演你读信时的样子——你会皱眉吗,会惊讶吗,会觉得我唐突吗,还是会,有那么一点点的、和我一样的心动呢? 我甚至在写完最后一个字的时候,犹豫了很久很久,该不该把它送到你面前。我无数次把它收起来,又无数次拿出来。直到我想起,如果哪一天,我忽然再也见不到你了——如果我们就那样在人群中失散,而我这些年的喜欢,连一个字都没能让你知道——那我一定会恨自己一辈子。比起被你拒绝,我更怕的,是连被你拒绝的资格,都因为我的懦弱而失去了。 于是,我终于把它写好,郑重地,交到你手里。这封信的每一个字,都是我心里的原样。它们可能不够漂亮,不够动人,可它们足够真。真到我把它交出去的这一刻,胸口空了一角——那一角里,曾盛着这些年所有不敢说出口的、滚烫的爱。 八、我爱你 好了,写了这么多,绕了这么多弯,我知道,你等的其实就那一句。 那么,亲爱的,听我说—— 我爱你。 不是“欣赏”,不是“喜欢”,是“爱”。是那种,我用了很久才敢承认、承认之后再也收不回去的爱。是那种,愿意把余生所有的好都分给你、把所有的风雨都挡在你身外的爱。是那种,看着你笑我比自己笑还开心、看你难过我恨不能替你难过的爱。是那种,不计较回报、不求你回应、只愿你这一生平安快乐的爱。 我爱你,爱的是完整的你。爱你的明亮,也爱你的暗影;爱你的坚强,也爱你偶尔的脆弱;爱你人前的光彩,也爱你独处时那不为人知的一点柔软。我不爱一个理想化的幻影,我爱的是那个真实地活在这世上、有温度有脾气、会开心会难过的你。我甚至爱你在别人看来无足轻重、在我看来却千金不换的那些小小的一切。我爱你的名字,爱你念起来时舌尖那一点温柔的起伏;我爱你的声音,爱它低下来时的安静和笑起来时的清亮。一个人爱另一个人到深处,大约就是这样,连她身上最平常的、最普通的东西,都成了世间仅有的、独一无二的珍宝。而你就是我的珍宝。 我爱你,不是一时冲动,而是这些年来,一天一天、一分一分,累积起来的。它没有哪一天是空的,没有哪一刻是假的。它那么满,满到我已经藏不住了,满到我只想一股脑儿地,全都倒给你。 我想,爱一个人的最高形式,大概不是占有,而是祝愿。祝愿她平安,祝愿她顺遂,祝愿她常带笑意,祝愿她一生被人温柔以待。而这份祝愿里,最贪婪的一份,是我私心想要成为那个温柔以待她的人。可即便做不成那个人,我的祝愿也一点都不会少。我爱你,所以我希望你过得好,不管这份好,是不是我给的。如果有一天,你真的找到了让你幸福的那个人,只要你是真的幸福,我大概……也会一边笑着祝福,一边在心里酸酸地、替你高兴吧。爱到深处,是希望她好,好到愿意为她让出自己的位置。我想,这就是我此刻最真实的心情了。 九、我对未来的想象 如果,我是说如果,你也愿意。 我想象过我们的以后,想象过很多很多回。请允许我说给你听。 我想象过,我们会有很多个普通的早晨。太阳照进窗子,你还没醒,我偷偷看你睡着的脸,觉得这就是全世界最好的风景。然后我轻手轻脚地起床,为你准备你喜欢的那一口吃的,等你揉着眼睛出来,迷迷糊糊地说一句“早”。 我想象过,我们会一起走过很多个城市,去很多很多地方。我们会在陌生的街头迷路,然后一起哈哈大笑;会在海边看日落,在雪里踩出两串脚印;会在异乡的夜里,肩并肩地数星星,说一些只有我们俩才懂的悄悄话。世界那么大,我想和你一起去看看。 我想象过,我们会养一只猫,或者一只狗。你负责宠爱它,我负责收拾它闯的祸。我们会因为它的一点点小动作就开心半天,会在深夜里因为它的呼噜声相视而笑。我们会有一个不大不小的家,房子里装满我们共同的、鸡毛蒜皮的、却无比温暖的日常。 我想象过,等我们都很老很老了,头发都白了,走不动了,就坐在门口的椅子上晒太阳。我还会像现在这样,偷偷看你——看时光在你脸上留下的痕迹,看你依然弯弯的眼睛,看你依然会为我露出那个我收藏了一辈子的笑。然后我会握住你的手,跟你说,这一辈子,能遇见你、能和你一起老去,是我这辈子最幸运的事。 我知道这些想象很遥远,甚至有点傻。可正是这些有点傻的想象,让我在每一个近乎要放弃的夜晚,都有力量继续喜欢下去。因为有你,我对未来,突然有了那么多、那么多甜蜜的期待。 我也知道,真实的生活,绝不会只有我写的这些甜。它一定也有柴米油盐,有争吵,有疲惫,有无聊的日复一日,有两个人意见不合、谁都不肯先低头的时刻。可我想让你知道,这些我全都想过了。我想要的从来不是一个完美的童话,我想要的,是一个真实的人生里,有一个真实的你,和我并肩。我愿意和你一起面对所有的不完美,一起把那些平凡琐碎的日子,过成谁都舍不得丢掉的、值得回忆的一生。 我会学着做饭,学着收拾屋子,学着记住你的每一个小习惯,学着在你不舒服的时候照顾你,学着在你得意时为你高兴、在你失意时为你撑腰。我不敢说我什么都会,但我敢说,为了你,我什么都愿意学,而且愿意学一辈子。人这一生,能遇见一个让我心甘情愿付出所有这些的人,是多大的幸运。而你,就是那个人。 十、我的坦白与担心 我知道,收到这样一封信,你可能会很惊讶,可能会措手不及,也可能会觉得沉重。 我先向你道歉。为我这些年的沉默,为我不请自来的深情,为我把这么大的心,这样猝不及防地摆到你面前。我没有要你立刻回答我,也绝不会用这份喜欢来绑架你。我喜欢你,是我一个人的事,是我甘愿的事,我不会因为你不喜欢我,就收回我的喜欢,更不会因为得不到回应,就怪你半分。 我也想坦然地告诉你,我并不完美。我有我的缺点,我的软弱,我的笨拙,我的小心思。我可能给不了你惊天动地的浪漫,但我愿意给你我全部的真心、全部的耐心,和一个愿意陪你慢慢变好、陪你看遍人间冷暖的我。我不敢承诺我是这世上最好的人,但我敢承诺,这世上最想把最好的都给你的人里,一定有我。 我更想跟你说的是,不管你最后怎么选,我都尊重你。如果这份喜欢,最终只能成为我一个人的秘密,那我也会把它好好收好,不打扰,不纠缠,不让你为难。我只希望,即使我们无法在一起,你也知道,在这世界的某个角落,有一个人,如此真切地、毫无保留地,爱过你。而你,永远值得被这样爱着。 谢谢你,来过我的生命 写到这里,我突然很想好好跟你说一声谢谢。谢谢你,谢谢你来到这世上,谢谢你在茫茫人海里,恰好和我活在同一个时代、同一个城市、同一段时光里。谢谢你曾那样不经意地、就点亮了我一整个灰扑扑的青春。你大概永远也不会知道,你的存在本身,对我而言,就是一份多贵重的礼物。 谢谢你让我知道,原来这世上真有一种喜欢,可以让人这样盲目又这样清醒,这样勇敢又这样胆怯,这样患得患失,又这样甘之如饴。是你教会了我什么叫心动,什么叫想念,什么叫一个人愿意为了另一个人,悄悄长成更好的自己。在我还不够好的那些年里,是你像一盏远处的灯,让我有了方向,有了想要努力靠近的地方。 谢谢你的善良,你的温柔,你的每一次不期而遇的笑。它们都是我这些年悄悄存下的、最宝贵的光。也是它们让我相信,这世界不管有多少风霜,总还有值得温柔以待的事物,总还有一个让我愿意把心整个交出去的人。 所以,无论这封信的结局是什么,我都不会后悔写下它。因为有些爱,它最好的结局,也许不是一定被回应,而是它曾经那样纯粹地、炽热地、毫无保留地存在过。而它存在过本身,就已经足够让我的这一生,变得不一样了。谢谢你来过我的生命——光是这一件事,我就已经觉得自己,是这世上顶幸运的一个人了。 十一、给你的最后一句 写到这里,这封信,也快到结尾了。 可我想说的话,其实还有很多很多。爱与暗恋,就是这样,像一片海,怎么舀,都舀不完。可我知道,话再多,终究要有一个落点,就像再长的路,也要有一个让人安心停靠的码头。我的码头,是你。 我把我藏了这么多年的心,就这样,原原本本地,交给你了。它笨拙,它滚烫,它里面满满地,都是你。 亲爱的,我不求你立刻给我答案。我只想让你知道——你往前走,不必回头,也不必担心,因为我会一直在你身后不远的地方,安静地、固执地、欢喜地看着你。而如果你愿意停下来,回过头,看看我,你会发现,我其实,已经向着你,走了很久很久。 我爱你。 也许,是时候了。你愿不愿意,牵起我的手,让我陪你,走完这一生? 我懂,读到这儿,你心里一定有许多话,也许多少会有一点乱。没关系的,你慢慢来。你不用急着回答我,也不用怕我会等得不耐烦。你可以先好好看看这封信,看完了,再告诉你心里最真实的那句话。无论那句话是什么,我都会接住它,认真地、郑重地,当作你给我的、最珍贵的礼物。 如果有一天,你想好了,想跟我说说话,我都在。我很好找,只要你愿意回头,我就会在你转身就能看见的地方。我会一直在那里,安安静静地,等那一个属于我的答案。因为是你,所以我等得起;也因为是你,所以哪怕要等很久很久,我都甘之如饴。 等着你,无论答案是什么,我都等。 永远爱你的 某个人


活动规则
11月将会选出前三名最积极的用户并发放奖励。若想要当“数评论”的私信(数前三名评论量最多的),待遇不会少。若评论数>=2,私信,否则可能不会被看见。如果有人说什么评论数达标但没关注,我将一律无视。


我天,管理员竞赛给我发了4200个罐头!
我的小号报了ACGO嘻哈赛#10,然后大号报不了了(不是点不了,竞赛说明里确说了多账号禁止,每位选手仅限使用一个账号参赛,一经发现,取消本次奖励,并视情节予以禁言或封号处理)写完题后🧠有点烦,毕竟竞赛分是加在小号上。等竞赛结束了终于收到了加罐头的通知,结果,不看不知道,一看吓一跳,下面就是我看到的内容: 管理员竟然给我发了4200个罐头! 原本我还是不相信的,去罐头商城里看了加罐头的记录,又一次被吓到了 是真的!!! 然后,我就拿这些罐头买了39个空间扩容卡,全充团里了,加上以前换的一些,就有这么多空间了 难不成,今天是我的幸运日??? 后续: 得知真相的我十分感激朱老师,希望他下次手再抖一点,每人发8888个罐头 榜三了??! 榜二?!!

2026CSP-S第二轮复赛模拟赛题解
目录 题号 题目 完整算法 时间复杂度 空间复杂度 A 灯塔巡航 排序、二分、动态规划 O(nlogn)O(n\log n)O(nlogn) O(n)O(n)O(n) B 优惠通道 分层状态图、Dijkstra O((n+m)log(n+m))O((n+m)\log(n+m))O((n+m)log(n+m)) O(n+m)O(n+m)O(n+m) C 区间能量 懒标记线段树 O(n+qlogn)O(n+q\log n)O(n+qlogn) O(n)O(n)O(n) D 树上信标 换根动态规划 O(n)O(n)O(n) O(n)O(n)O(n) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ A. 灯塔巡航 解题思路 题意分析 记任务数量为 nnn,第 iii 个任务的时间区间为 [li,ri)[l_i,r_i)[li ,ri )、能量为 viv_ivi 。首先考虑按时间顺序执行任务。若一个方案中的任务互不冲突,它们就能按结束时刻从小到大排列。于是先将所有任务按照结束时刻排序,之后只需研究排序后的任务前缀。下文的任务编号均指排序后的编号。 任务能量不同时,只看某个局部条件无法决定是否选择任务。单个任务能量较高,也可能挤占其他任务的执行时间,导致总能量更低。因此,需要同时比较“选择当前任务”和“跳过当前任务”两类方案。 定义 dp[i]\mathrm{dp}[i]dp[i] 为只考虑前 iii 个任务时,能够获得的最大能量。这里“考虑”表示这些任务允许被选择,并不要求全部执行。没有任务时,dp[0]=0\mathrm{dp}[0]=0dp[0]=0。 对第 iii 个任务分类讨论。如果跳过它,其他任务都在前 i−1i-1i−1 个任务中,最优收益就是 dp[i−1]\mathrm{dp}[i-1]dp[i−1]。 如果选择它,之前执行的任务必须在时刻 lil_ili 或更早结束,即满足 rj≤lir_j\le l_irj ≤li 。由于结束时刻已经有序,这些任务恰好组成一个前缀。令 pip_ipi 为前 i−1i-1i−1 个任务中满足 rj≤lir_j\le l_irj ≤li 的任务数量,那么可以从前 pip_ipi 个任务中选出最优方案,再接上当前任务,获得 dp[pi]+vi\mathrm{dp}[p_i]+v_idp[pi ]+vi 点能量。若没有任务能衔接,便有 pi=0p_i=0pi =0。 因此状态转移为 dp[i]=max(dp[i−1], dp[pi]+vi).\mathrm{dp}[i]=\max\bigl(\mathrm{dp}[i-1],\ \mathrm{dp}[p_i]+v_i\bigr). dp[i]=max(dp[i−1], dp[pi ]+vi ). 这里可以将前 pip_ipi 个任务的任意合法方案直接接到任务 iii 之前:该前缀内每个任务的结束时刻都不大于 lil_ili ,所以整个方案必然已在当前任务开始前完成。 现在只剩下如何快速求出 pip_ipi 。若逐个向前扫描,每个任务最多检查 nnn 个前驱,总计需要 O(n2)O(n^2)O(n2) 时间。结束时刻有序,可以使用二分查找,将一次查询缩短到 O(logn)O(\log n)O(logn)。 具体来说,upper_bound 找到第一个严格大于 lil_ili 的结束时刻,它前面的元素数量就是 pip_ipi 。必须保留结束时刻恰好等于 lil_ili 的任务,才能符合半开区间的衔接规则。参考代码中的任务数组从下标 000 开始,而动态规划数组从下标 111 开始;二分查找得到的是可用前缀的长度,可以直接作为动态规划下标。 最终,dp[n]\mathrm{dp}[n]dp[n] 就是所有任务的最优答案。 部分分说明: * 测试点 1∼51\sim51∼5(n≤1000n\le1000n≤1000,ri≤104r_i\le10^4ri ≤104,vi≤103v_i\le10^3vi ≤103):按结束时刻排序,使用同样的动态规划,但通过逐个扫描前面的任务求出 pip_ipi 。时间复杂度为 O(n2)O(n^2)O(n2),可以处理这一组数据。 * 测试点 6∼106\sim106∼10(所有任务满足 vi=Vv_i=Vvi =V):总能量等于选择的任务数乘以 VVV,转为最大化互不冲突的任务数量。按结束时刻排序,每次选择最早结束且能够衔接的任务。最早结束的选择会给后续任务留下尽可能多的时间,因此区间选择贪心可以处理这一组数据。 * 测试点 11∼1511\sim1511∼15(ri≤106r_i\le10^6ri ≤106):可以按整数时刻做动态规划。令 f[t]f[t]f[t] 表示所有选中任务不晚于时刻 ttt 完成时能获得的最大能量,将任务按结束时刻分组,计算 f[t]=max(f[t−1], maxri=t(f[li]+vi))f[t]=\max\bigl(f[t-1],\ \max_{r_i=t}(f[l_i]+v_i)\bigr)f[t]=max(f[t−1], maxri =t (f[li ]+vi )),初始化 f[0]=0f[0]=0f[0]=0。由于 li<ril_i<r_ili <ri ,转移时需要的状态均已算出。令 T=maxriT=\max r_iT=maxri ,时间与空间复杂度均可控制在 O(n+T)O(n+T)O(n+T)。 * 测试点 16∼2016\sim2016∼20(完整数据范围):结束时刻可达 10910^9109,使用按结束时刻排序、二分查找前驱的动态规划,时间复杂度为 O(nlogn)O(n\log n)O(nlogn)。这一做法也适用于前面的全部测试点。 实现步骤 1. 读入所有任务,按照结束时刻从小到大排序,并保存排序后的结束时刻数组。 2. 建立长度为 n+1n+1n+1 的动态规划数组,将 dp[0]\mathrm{dp}[0]dp[0] 初始化为 000。 3. 按顺序处理第 iii 个任务,在前 i−1i-1i−1 个结束时刻中使用 upper_bound 求出 pip_ipi 。 4. 按照转移式比较跳过和选择当前任务的收益,得到 dp[i]\mathrm{dp}[i]dp[i]。 5. 输出 dp[n]\mathrm{dp}[n]dp[n]。 正确性证明 对考虑的任务数量 iii 进行归纳,证明 dp[i]\mathrm{dp}[i]dp[i] 等于前 iii 个任务的最优收益。 当 i=0i=0i=0 时,没有任务可以执行,最大收益为 000,与初始化一致。 假设所有下标小于 iii 的状态都已正确求出。考察前 iii 个任务的任意最优方案。 若方案没有选择第 iii 个任务,它完全由前 i−1i-1i−1 个任务组成,收益至多为 dp[i−1]\mathrm{dp}[i-1]dp[i−1];由归纳假设,该收益也确实能够达到。 若方案选择了第 iii 个任务,因为第 iii 个任务的结束时刻在前 iii 个任务中最晚,且每个任务都有 lj<rjl_j<r_jlj <rj ,其他任务不可能安排在它之后,只能在它开始前结束。这些任务均满足 rj≤lir_j\le l_irj ≤li ,属于前 pip_ipi 个任务,所以它们的总收益至多为 dp[pi]\mathrm{dp}[p_i]dp[pi ]。反过来,前 pip_ipi 个任务的最优方案能够合法地接上第 iii 个任务,达到 dp[pi]+vi\mathrm{dp}[p_i]+v_idp[pi ]+vi 。 两类方案覆盖了所有可能,分别取各类最大收益再取最大值,就得到正确的 dp[i]\mathrm{dp}[i]dp[i]。由数学归纳法,最终输出的 dp[n]\mathrm{dp}[n]dp[n] 正确。 复杂度分析 排序需要 O(nlogn)O(n\log n)O(nlogn) 时间,每个任务进行一次 O(logn)O(\log n)O(logn) 的二分查找与一次常数时间的转移,总时间复杂度为 O(nlogn)O(n\log n)O(nlogn)。任务数组、结束时刻数组和动态规划数组共占用 O(n)O(n)O(n) 空间。 参考代码 B. 优惠通道 解题思路 题意分析 设原图有 nnn 个路口和 mmm 条双向道路,起点为 111,终点为 nnn。普通最短路只记录到达每个路口的最小时间。但在本题中,到达同一个路口的两条路线,还可能具有不同的优惠券使用情况。 例如,到达某个路口时,一条路线耗时较少,但优惠券已经使用;另一条路线耗时略多,却保留着优惠券。若后面有一条耗时很大的道路,第二种状态就可能得到更好的最终结果。因此,不能只保留一个最短距离,需要将“优惠券是否已经使用”也加入状态。 将状态记为 (u,k)(u,k)(u,k),其中 uuu 是当前路口,k=0k=0k=0 表示优惠券尚未使用,k=1k=1k=1 表示已经使用。定义 d[u][k]\mathrm{d}[u][k]d[u][k] 为从起点出发,到达这一状态的最小耗时。初始时人在路口 111,优惠券尚未使用,所以 d[1][0]=0,\mathrm{d}[1][0]=0, d[1][0]=0, 其余状态暂设为无穷大。 现在考虑从路口 uuu 沿一条权值为 www 的道路走到路口 vvv。如果正常通行,优惠券的使用情况保持不变,状态转移为 (u,k)⟶(v,k),费用为 w.(u,k)\longrightarrow(v,k),\qquad \text{费用为 }w. (u,k)⟶(v,k),费用为 w. 如果优惠券还未使用,还可以在这次经过道路时使用它,使当前费用变为 000,状态转移为 (u,0)⟶(v,1),费用为 0.(u,0)\longrightarrow(v,1),\qquad \text{费用为 }0. (u,0)⟶(v,1),费用为 0. 已经使用优惠券的状态只允许继续正常通行。这样,任意一条状态转移路径最多只会发生一次从未使用到已使用的变化,也就准确地限制了优惠券的使用次数。 可以将每个原图路口拆成两个状态。这个状态图共有 2n2n2n 个点;原图每条无向道路对应两种方向,每个方向有两条正常通行的状态边,以及一条使用优惠券的状态边,因此状态边数为 6m6m6m。实际编程时保存原图邻接表,在遍历道路时进行上述转移即可。 所有状态边的权值都非负,包括使用优惠券产生的零权边,因此可以使用 Dijkstra 算法。用小根堆维护当前距离最小的待处理状态,每次取出后沿原图相邻道路进行松弛。一个状态的距离被改小时,将新的记录放入堆中;之后若取出的记录已经过期,就直接跳过。 到达终点时,优惠券可以已经使用,也可以仍然保留,所以答案为 min(d[n][0], d[n][1]).\min\bigl(\mathrm{d}[n][0],\ \mathrm{d}[n][1]\bigr). min(d[n][0], d[n][1]). 若两者都是无穷大,终点不可达,输出 -1。特别地,当 n=1n=1n=1 时,已经位于终点,可以不经过道路、不使用优惠券,正确答案为 000;对两个状态取最小值会自然地覆盖这种情况。 部分分说明: * 测试点 1∼51\sim51∼5(n,m≤1000n,m\le1000n,m≤1000):仍然使用两个优惠券状态,但采用朴素 Dijkstra。每轮扫描全部 2n2n2n 个状态,选出尚未确定且距离最小的状态,再通过邻接表进行松弛。时间复杂度为 O(n2+m)O(n^2+m)O(n2+m),可以处理这一组数据。 * 测试点 6∼106\sim106∼10(n,m≤2×105n,m\le2\times10^5n,m≤2×105,每条道路的权值均为 WWW):一条经过 kkk 条道路的路线,最小耗时是 max(k−1,0)W\max(k-1,0)Wmax(k−1,0)W。这一值随 kkk 增大而不减,因此对原图运行 BFS,求出从 111 到 nnn 最少需要经过多少条道路即可。若不可达输出 -1,否则用该公式计算答案,时间复杂度为 O(n+m)O(n+m)O(n+m)。 * 测试点 11∼2011\sim2011∼20(完整数据范围):使用状态扩展和堆优化 Dijkstra。该做法适用于所有测试点。 实现步骤 1. 读入道路,按照双向道路建立邻接表。 2. 将所有距离初始化为无穷大,令 d[1][0]=0\mathrm{d}[1][0]=0d[1][0]=0,把状态 (1,0)(1,0)(1,0) 及距离 000 放入小根堆。 3. 取出距离最小的状态;如果堆中的距离与当前记录不一致,跳过这条过期记录。 4. 遍历相邻道路,尝试正常通行,更新相同优惠券状态下的距离。 5. 如果当前优惠券尚未使用,再尝试免费经过该道路,更新已使用优惠券的状态。每次成功更新后,将新记录放入堆。 6. 堆为空后,取终点两个状态距离的最小值;不可达时输出 -1,否则输出这一最小值。 正确性证明 首先证明原问题中的合法路线与状态图中的路径相互对应,并且总费用相同。 给定一条至多使用一次优惠券的合法路线,从状态 (1,0)(1,0)(1,0) 开始。正常经过道路时,走状态图中费用为原边权且优惠券状态不变的边;若在某次经过道路时使用优惠券,就走从未使用状态到已使用状态的零权边。这样能够到达终点的某个状态,且每次经过道路的计费方式与原路线一致。 反过来,给定一条从 (1,0)(1,0)(1,0) 出发的状态图路径,将每次转移还原为原图中的道路经过。状态图只允许从未使用状态转为已使用状态,不能反向恢复,因此路径至多包含一次免费经过。还原后得到合法路线,且费用保持不变。 于是,题目要求的最小耗时等于状态图中从 (1,0)(1,0)(1,0) 到 (n,0)(n,0)(n,0)、(n,1)(n,1)(n,1) 的最短距离的较小值。 状态图所有边的权值均非负。Dijkstra 每次选择当前距离最小的未确定状态时,如果存在更短路径,则该路径上第一个未确定状态的前驱已经被处理过,相应松弛会给出不大于这条更短路径前缀的距离。由于之后的边权非负,这会与当前选出的距离最小性矛盾。因此每次确定的距离正确,所有可达状态的最短距离都能正确求出。 最终取终点两个状态的较小距离,恰好涵盖使用和不使用优惠券的全部合法路线;两者均不可达时输出 -1。因此算法正确。 复杂度分析 状态图有 2n2n2n 个状态和 6m6m6m 条有向状态边。邻接表建图需要 O(n+m)O(n+m)O(n+m) 时间,堆优化 Dijkstra 的时间复杂度为 O((n+m)log(n+m))O((n+m)\log(n+m))O((n+m)log(n+m)),距离、邻接表和堆共占用 O(n+m)O(n+m)O(n+m) 空间。这里用 log(n+m)\log(n+m)log(n+m) 计入堆中可能保留的过期记录。 参考代码 C. 区间能量 解题思路 题意分析 设数组长度为 nnn,操作次数为 qqq,数组初始全为 000。 从直接维护数组开始。 对区间 [l,r][l,r][l,r] 加上 vvv 时,逐个修改数组中的元素;查询时,逐个累加区间中的元素。每次操作最多访问 nnn 个位置,总时间复杂度为 O(nq)O(nq)O(nq)。当 n,q≤1000n,q\le 1000n,q≤1000 时,这个方法可以完成计算;当两者都达到 2×1052\times 10^52×105 时,需要更快的区间维护方法。 静态数组可以用前缀和快速查询,但本题修改与查询交替出现。一次区间修改会影响多个前缀和,逐个重新维护仍可能花费 O(n)O(n)O(n) 时间。我们需要同时加速区间修改和区间查询。 用线段树维护区间和。 线段树根节点管理 [1,n][1,n][1,n],每个非叶节点将所管理的区间 [L,R][L,R][L,R] 分成 [L,M][L,M][L,M] 与 [M+1,R][M+1,R][M+1,R],其中 M=⌊(L+R)/2⌋M=\lfloor(L+R)/2\rfloorM=⌊(L+R)/2⌋。节点 ppp 用 sump\mathrm{sum}_psump 保存其区间的元素和。若左右子节点都已包含应有的修改,父节点的和等于左右子节点的和: sump=sum2p+sum2p+1.\mathrm{sum}_p=\mathrm{sum}_{2p}+\mathrm{sum}_{2p+1}. sump =sum2p +sum2p+1 . 查询区间可以分成若干个线段树节点管理的区间,答案就是这些区间和的总和。 整段修改只更新总和。 假设当前节点管理 [L,R][L,R][L,R],这段区间完全包含在修改范围中。区间中共有 R−L+1R-L+1R−L+1 个位置,每个位置增加 vvv,总和就增加 v(R−L+1).v(R-L+1). v(R−L+1). 因此可以直接执行 sump←sump+v(R−L+1)\mathrm{sum}_p\gets\mathrm{sum}_p+v(R-L****ump ←sump +v(R−L+1)。若同时递归修改所有叶节点,仍然可能访问整个数组。我们把“这段区间中每个位置还应增加多少”记在当前节点,暂缓更新子节点。 懒标记保存每个位置的增量。 令 tagp\mathrm{tag}_ptagp 表示已经计入 sump\mathrm{sum}_psump 、尚未传给两个子节点的统一增量。完整覆盖当前节点时,执行 sump←sump+v(R−L+1),tagp←tagp+v.\mathrm{sum}_p\gets\mathrm{sum}_p+v(R-L+1),\qquad \mathrm{tag}_p\gets\mathrm{tag}_p+v. sump ←sump +v(R−L+1),tagp ←tagp +v. 多次加法可以合并,例如先增加 333 再增加 −1-1−1,等价于每个位置增加 222。所以懒标记用加法累计。 这里需要区分两种量:sump\mathrm{sum}_psump 是整段区间的和,tagp\mathrm{tag}_ptagp 是区间内每个位置的待传增量。给总和增加增量时,要乘区间长度;累计懒标记时,直接加上增量。 访问子节点前下传标记。 当修改或查询只涉及当前节点的一部分时,需要访问子节点。此时先把 tagp\mathrm{tag}_ptagp 传给左右子节点:分别给子节点的区间和加上“增量乘以该子区间长度”,再给子节点的懒标记加上同一增量,最后清空 tagp\mathrm{tag}_ptagp 。 例如,节点 [1,4][1,4][1,4] 整段增加 333 后,它的区间和增加 121212,懒标记为 333。若之后要查询 [2,3][2,3][2,3],先向子区间 [1,2][1,2][1,2] 和 [3,4][3,4][3,4] 分别传递增量 333,两个子节点的区间和各增加 666,然后继续向下查询。父节点的区间和已经包含这次增加,下传时保持原值。 对子区间完成修改后,当前节点的标记已清空,重新用左右子节点之和更新父节点即可。查询只汇总答案,下传也只是把已经发生的修改传给子节点,所以查询不会改变数组的实际值。 为什么每次操作只要 O(logn)O(\log n)O(logn)。 递归时,完全被操作区间覆盖的节点直接停止。每一层至多有两个与操作端点相交、还需要继续拆分的节点,其余被访问的节点完整覆盖后就停止。线段树高为 O(logn)O(\log n)O(logn),因此一次区间修改或查询的时间复杂度都是 O(logn)O(\log n)O(logn)。 部分分说明: * 测试点 1∼51\sim 51∼5(n,q≤1000n,q\le 1000n,q≤1000):直接使用数组模拟区间加法和区间求和,总时间复杂度为 O(nq)O(nq)O(nq)。 * 测试点 6∼106\sim 106∼10(特殊性质 A,所有修改均满足 l=rl=rl=r):用树状数组维护单点增加与前缀和,区间和为两个前缀和之差,每次操作为 O(logn)O(\log n)O(logn)。 * 测试点 11∼2011\sim 2011∼20(完整数据):使用带加法懒标记的线段树,同时支持区间加法与区间求和,每次操作为 O(logn)O(\log n)O(logn)。 实现步骤 1. 开设区间和数组与懒标记数组。数组初始全为 000,线段树各节点的区间和、标记也都初始化为 000。 2. 编写整段增加函数:将节点的区间和增加“增量乘以区间长度”,并累计该节点的懒标记。 3. 编写下传函数:把当前节点的增量分别作用于左右子节点,然后清空当前标记。 4. 处理区间修改:若当前区间被完整覆盖,直接整段增加;否则先下传标记,再递归修改有交集的子区间,最后合并左右子节点的区间和。 5. 处理区间查询:若当前区间被完整覆盖,返回区间和;否则先下传标记,再递归查询有交集的子区间,并累加返回值。 6. 依次执行所有操作,每次查询返回相应的区间和。 正确性证明 对线段树维护的状态进行归纳。初始所有元素均为 000,所有节点的区间和与懒标记也为 000,状态正确。 对于非叶节点,维护如下关系:它的区间和等于左右子节点保存的区间和之和,再加上当前节点尚未下传的统一增量对整段区间的贡献,即 sump=sum2p+sum2p+1+tagp(R−L+1).\mathrm{sum}_p=\mathrm{sum}_{2p}+\mathrm{sum}_{2p+1} +\mathrm{tag}_p(R-L+1). sump =sum2p +sum2p+1 +tagp (R−L+1). 这里子节点可能尚未包含祖先的标记;从根向下递归访问时,先下传路径上的标记,就能使被访问节点包含祖先修改的全部影响。 整段增加时,区间中每个位置增加 vvv,区间和增加 v(R−L+1)v(R-L+1)v(R−L+1),懒标记增加 vvv,上述关系保持成立,保存的修改也与题目要求一致。 下传时,将同一增量作用于两个子区间。由于两个子区间不相交且恰好组成父区间,子节点区间和增加的总量为 tagp(R−L+1)\mathrm{tag}_p(R-L+1)tagp (R−L+1)。清空父节点标记后,父节点区间和等于两个子节点区间和之和,实际数组的值保持不变。 区间修改部分覆盖当前节点时,先下传,再递归处理所有有交集的子区间。根据归纳假设,子区间中的修改正确,重新合并后父节点区间和也正确。因此每次修改均正确维护数组状态。 区间查询完整覆盖当前节点时,路径上的祖先标记已经下传,直接返回的区间和就是当前实际区间和。部分覆盖时,查询范围被拆成左右两个不相交的部分,递归返回各部分的正确区间和,将它们相加便得到原查询范围的答案。因此算法输出的每个查询结果均正确。 复杂度分析 零初始化需要 O(n)O(n)O(n) 时间,每次修改或查询需要 O(logn)O(\log n)O(logn) 时间,总时间复杂度为 O(n+qlogn)O(n+q\log n)O(n+qlogn),空间复杂度为 O(n)O(n)O(n)。 参考代码 D. 树上信标 解题思路 题意分析 设树有 nnn 个节点。固定一个起点,遍历整棵树就能计算这个起点到所有点的距离,时间复杂度为 O(n)O(n)O(n)。如果为每个起点分别做一次遍历,总时间复杂度是 O(n2)O(n^2)O(n2),只能用于较小的数据。 两个相邻节点作为起点时,到其他点的距离存在简单的变化规律。先求出一个节点的答案,再根据相邻节点的关系逐步求出所有答案,就是本题的换根思路。 先固定根,计算子树信息 暂时把节点 111 作为根。对每个节点 uuu,定义两个量: sz[u]=以 u 为根的子树中的节点数,\operatorname{sz}[u]=\text{以 }u\text{ 为根的子树中的节点数}, sz[u]=以 u 为根的子树中的节点数, f[u]=∑x 在 u 的子树中dist(u,x).\operatorname{f}[u] =\sum_{x\text{ 在 }u\text{ 的子树中}}\operatorname{dist}(u,x). f[u]=x 在 u 的子树中∑ dist(u,x). 子树大小包含节点 uuu 自身。对于叶子节点,有 sz[u]=1\operatorname{sz}[u]=1sz[u]=1、f[u]=0\operatorname{f}[u]=0f[u]=0。 设 vvv 是 uuu 的一个儿子,边 (u,v)(u,v)(u,v) 的长度为 www。从 uuu 到 vvv 子树中的任意节点,都要先经过这条长度为 www 的边,再从 vvv 走到目标节点。因此,这棵子树对 f[u]\operatorname{f}[u]f[u] 的贡献是 f[v]+sz[v]×w.\operatorname{f}[v]+\operatorname{sz}[v]\times w. f[v]+sz[v]×w. 遍历 uuu 的所有儿子,就得到 sz[u]=1+∑v 是 u 的儿子sz[v],\operatorname{sz}[u]=1+\sum_{v\text{ 是 }u\text{ 的儿子}}\operatorname{sz}[v], sz[u]=1+v 是 u 的儿子∑ sz[v], f[u]=∑v 是 u 的儿子(f[v]+sz[v]×wu,v).\operatorname{f}[u] =\sum_{v\text{ 是 }u\text{ 的儿子}} \left(\operatorname{f}[v]+\operatorname{sz}[v]\times w_{u,v}\right). f[u]=v 是 u 的儿子∑ (f[v]+sz[v]×wu,v ). 由于节点 111 的子树就是整棵树,节点 111 的完整答案为 ans[1]=f[1].\operatorname{ans}[1]=\operatorname{f}[1]. ans[1]=f[1]. 沿一条边推导换根公式 设 ppp 是 uuu 的父节点,边 (p,u)(p,u)(p,u) 的长度为 www。删除这条边,树会分成两部分:一部分是 uuu 的子树,包含 sz[u]\operatorname{sz}[u]sz[u] 个节点;另一部分包含 n−sz[u]n-\operatorname{sz}[u]n−sz[u] 个节点。 把起点从 ppp 移到 uuu 后,对于 uuu 子树中的节点,起点到它们的路径都减少了边 (p,u)(p,u)(p,u),每个节点的距离减少 www,总共减少 sz[u]×w\operatorname{sz}[u]\times wsz[u]×w。 对于子树外的节点,起点到它们的路径都新增了边 (u,p)(u,p)(u,p),每个节点的距离增加 www,总共增加 (n−sz[u])×w(n-\operatorname{sz}[u])\times w(n−sz[u])×w。 两部分合并,得到 ans[u]=ans[p]−sz[u]×w+(n−sz[u])×w=ans[p]+(n−2sz[u])×w.\begin{aligned} \operatorname{ans}[u] &=\operatorname{ans}[p] -\operatorname{sz}[u]\times w +(n-\operatorname{sz}[u])\times w\\ &=\operatorname{ans}[p]+(n-2\operatorname{sz}[u])\times w. \end{aligned} ans[u] =ans[p]−sz[u]×w+(n−sz[u])×w=ans[p]+(n−2sz[u])×w. 这里的 sz[u]\operatorname{sz}[u]sz[u] 始终按照最初以节点 111 为根时的父子关系计算。计算不同起点的答案时,只改变距离和,不改变这些子树大小。 用非递归顺序完成两轮计算 可以从节点 111 开始,建立一个遍历序列 ord\operatorname{ord}ord。处理序列中的节点时,把它的儿子追加到末尾,同时记录每个节点的父节点和父边长度。这样,父节点一定出现在儿子之前。 逆序处理 ord\operatorname{ord}ord,每个节点的儿子都已经处理完,可以把当前节点的子树大小和子树距离和累加给父节点。 再顺序处理 ord\operatorname{ord}ord,每个节点的父节点答案都已经求出,可以使用换根公式计算当前节点的答案。两轮计算都只处理每条父子关系一次。 当树是一条长度很大的链时,递归深度可能达到 nnn。参考代码使用遍历序列完成上述过程,额外调用栈深度为常数。 数值范围与输出 距离和需要使用足够大的整数类型。考虑 n=200000n=200000n=200000、每条边长为 10910^9109 的一条链。从端点出发,到各点的距离依次为 0,109,2×109,…,(n−1)×1090,10^9,2\times10^9,\ldots,(n-1)\times10^90,109,2×109,…,(n−1)×109,距离总和为 109∑i=0n−1i=109×200000×1999992=19999900000000000000.10^9\sum_{i=0}^{n-1}i =10^9\times\frac{200000\times199999}{2} =19999900000000000000. 109i=0∑n−1 i=109×2200000×199999 =19999900000000000000. 这个值超过有符号 long long 的最大值 922337203685477580792233720368547758079223372036854775807。因此,参考代码使用 __int128 保存 f\operatorname{f}f、ans\operatorname{ans}ans,并在乘法之前转换到 __int128。边权本身使用 long long 保存即可。 printf 没有直接输出 __int128 的格式符,可以不断取十进制末位,把得到的数字逆序后输出。所有答案均为非负整数;当 n=1n=1n=1 时,唯一节点的答案是 000,输出函数也要能处理这一情况。 部分分说明: * 测试点 1∼51\sim51∼5(n≤1000n\le1000n≤1000):枚举每个起点,分别遍历整棵树,累加从该起点出发的所有距离,总时间复杂度为 O(n2)O(n^2)O(n2)。 * 测试点 6∼106\sim106∼10(特殊性质 A,整棵树是一条链):从端点出发恢复链上节点的顺序,设第 iii 个节点的位置为 xix_ixi ,前缀和为 Pi=∑j=1ixjP_i=\sum_{j=1}^{i}x_jPi =∑j=1i xj ,且 P0=0P_0=0P0 =0。它到左侧节点的距离和为 (i−1)xi−Pi−1(i-1)x_i-P_{i-1}(i−1)xi −Pi−1 ,到右侧节点的距离和为 (Pn−Pi)−(n−i)xi(P_n-P_i)-(n-i)x_i(Pn −Pi )−(n−i)xi ,两部分相加即可。恢复顺序、计算前缀和以及求全部答案的时间复杂度均为 O(n)O(n)O(n),位置前缀和及答案使用 __int128。也可以先求一个端点的答案,再按相邻节点间的距离变化逐点递推。n=1n=1n=1 时直接输出 000。 * 测试点 11∼2011\sim2011∼20(无额外限制):使用完整的换根算法,逆序计算子树大小和子树距离和,再顺序求出所有节点的答案,总时间复杂度为 O(n)O(n)O(n)。 实现步骤 1. 读入树,使用邻接表保存每条无向边的两个方向。 2. 从节点 111 开始生成遍历序列 ord\operatorname{ord}ord,记录每个节点的父节点 fa[u]\operatorname{fa}[u]fa[u] 和父边长度 pw[u]\operatorname{pw}[u]pw[u]。 3. 初始化所有 sz[u]=1\operatorname{sz}[u]=1sz[u]=1、f[u]=0\operatorname{f}[u]=0f[u]=0。 4. 逆序处理序列中除根以外的节点 uuu,令 p=fa[u]p=\operatorname{fa}[u]p=fa[u],将 sz[u]\operatorname{sz}[u]sz[u] 累加到 sz[p]\operatorname{sz}[p]sz[p],将 f[u]+sz[u]×pw[u]\operatorname{f}[u]+\operatorname{sz}[u]\times\operatorname{pw}[u]f[u]+sz[u]×pw[u] 累加到 f[p]\operatorname{f}[p]f[p]。 5. 设置 ans[1]=f[1]\operatorname{ans}[1]=\operatorname{f}[1]ans[1]=f[1]。 6. 顺序处理序列中除根以外的节点 uuu,计算 ans[u]=ans[fa[u]]+(n−2sz[u])×pw[u]\operatorname{ans}[u]=\operatorname{ans}[\operatorname{fa}[u]]+(n-2\operatorname{sz}[u])\times\operatorname{pw}[u]ans[u]=ans[fa[u]]+(n−2sz[u])×pw[u]。 7. 按节点编号从小到大,把每个 __int128 答案转成十进制输出。 正确性证明 首先证明逆序计算得到的子树信息正确。 叶子节点的子树只有它自身,所以初始化的 sz[u]=1\operatorname{sz}[u]=1sz[u]=1、f[u]=0\operatorname{f}[u]=0f[u]=0 正确。对于任意非叶子节点 uuu,逆序处理保证它的全部儿子已经处理完成。不同儿子的子树互不相交,与节点 uuu 自身恰好组成 uuu 的子树,因此大小累加得到正确的 sz[u]\operatorname{sz}[u]sz[u]。对每个儿子 vvv,到它子树内所有节点的距离贡献为 f[v]+sz[v]×wu,v\operatorname{f}[v]+\operatorname{sz}[v]\times w_{u,v}f[v]+sz[v]×wu,v ,累加后得到正确的 f[u]\operatorname{f}[u]f[u]。由此,全部子树信息正确,ans[1]=f[1]\operatorname{ans}[1]=\operatorname{f}[1]ans[1]=f[1] 也正确。 其次证明换根计算正确。设 ans[p]\operatorname{ans}[p]ans[p] 已经正确,uuu 是 ppp 的儿子。删去边 (p,u)(p,u)(p,u) 后,所有节点被完整地分成 uuu 的子树和子树外两部分。起点由 ppp 移到 uuu 时,这两部分的距离总和分别减少 sz[u]×w\operatorname{sz}[u]\times wsz[u]×w、增加 (n−sz[u])×w(n-\operatorname{sz}[u])\times w(n−sz[u])×w。因此,换根公式准确计算出 ans[u]\operatorname{ans}[u]ans[u]。 顺序遍历中,父节点总在儿子之前。以正确的 ans[1]\operatorname{ans}[1]ans[1] 为起点归纳,全部节点的答案都正确。最终按照节点编号输出,因此算法符合题目要求。 复杂度分析 建立遍历序列时,每条无向边被检查两次;逆序计算和顺序换根各处理 n−1n-1n−1 条父子关系。因此,总时间复杂度为 O(n)O(n)O(n)。 邻接表、遍历序列以及各状态数组占用 O(n)O(n)O(n) 空间。十进制输出的位数有固定上界,不改变上述复杂度。 参考代码
有帮助,赞一个