作者: NF

  • Me! nfnfgo

    pfp

    My pfp, comes from one of my favourite anime movie “Your Name.”

    Just an ordinary osu! player, play mania! sometimes. Here is my osu! profile page

    🖥️Client & Devices

    Play with:

    • 🆕Osu!lazer client, on Windows11
    • 🖥️Wide Screen 21:9, 3440*1440, 144Hz
    • ⌨️keyboard (X Z) and
    • 🖱️mouse(raw input, 1.5 in-game sensitive).

    Looking forward to lazer on mobile! Curious how would the gameplay experience be like to aim and click on a touch screen… (Waiting for next TestFlight on iOS lol)

    Considering if I need to try out drawing tablet… however mouse seems to be enough for now for someone with skill like me lol (and also taking my terrible hit skill into consideration)

    🎵Song Genre!

    • EDM (Avicii, Vicetone, Porter Robinson…)
    • Vocaloid (Kikuo, Inaba Kumori, …)
    • Some other Japanese songs! (Yorushika, YOASOBI, …)

    I'm the rain - 稲葉曇 TRUE - Avicii Shelter - Porter Robinson

    🎯My Goal

    📧Contact

    • Email: nfamuse@proton.me

  • 「杂谈」《多哥》观后简述

    IMDb Link: https://www.imdb.com/title/tt5116302/

    剧透警告:本篇文章将包含影片相关剧情和人物信息。

    又是一部关于狗狗,展现出狗狗的忠诚,勇敢,与智慧的电影。

    这部电影与上次我们观看的《Eight Below》在剧情上有着异曲同工之妙,在这里就不展开叙述完整的剧情了。这里着重于说一说这部电影让我值得回味的点。

    首先是关于“多哥”本身。多哥从小不被看好,它没有它这个族群应有的体质,体型,用Sepp(男主)的话说,这只狗“无法为族群做出贡献”。对于“能为族群带来什么”的质疑,Sepp的妻子给出的回答是:“对生的希望”。这也为后面的剧情做了铺垫。

    其实多哥也拥有自己的优点,它跑的快。Sepp的妻子曾说过想让多哥试试“成为雪橇犬”,拉雪橇。可这个注意也被Sepp否决。

    “不可能,它生来就不是干这个的”。

    这一句质疑似乎打破了银幕的限制,让我们开始在现实中思考。似乎相似的质疑在现实世界中也会在我们耳旁时不时的出现,亦或是我们也曾经把同样的质疑送给过其他人。

    可是看完电影的我们也知道,多哥不仅成为了雪橇犬,还成为了雪橇犬中的领头人,成为了整个任务最大的功臣。它到底能不能成为雪橇犬,也就不证自明。

    面对着已经十二岁的多哥,Sepp对它说:“当初没有低估你的实力的,只有你自己了”。

    多哥作为一条狗,可能也不存在所谓“低估自己”的问题,但事实就是,多哥所谓对于“生的希望”,它的勇敢,坚持与执着,一次次的为自己争取着机会,一次次改变着自己的命运。小时候开始便不停地挖洞掏出狗圈;被关到屋子里也要从管道缝隙中想办法逃脱出去;被送走后冒着受伤的可能性也要装碎玻璃回家。一次次地回到主人的身边,追随着主人的雪橇。他一次又一次的坚持着,也许是因为身为狗狗的它不懂得何为“放弃”吧。

    终于,它成功的为自己争取到了一次表现的机会,而它也没有辜负这可能是仅有的一次难得的机会,成功展现出了自己作为雪橇犬领队的潜质,这也彻底改变了它的“狗生”。

    后面的故事我们也知道了。十二岁的它参加了,并近乎奇迹般的完成了一个几乎不可能的艰难任务。在这个任务中,它起到了关键性的作用,拯救了Sepp,也可以说是拯救了自己。

    此外,到最后任务完成之后,电影也刻画了所谓“报社”是如何对于这次事件进行报道的。在询问英雄狗狗的名字时,记者觉得“Fox”的名字容易让人们误以为是狐狸,怕影响新闻传播效果,从而另外选择一只狗进行报道。同时报道也并未按照事实,并没有提到12只狗队的接力,而是报道了“一只狗队奇迹般跑完全程”的故事。

    这又何尝不是现在所谓“新闻”背后的现状呢?相比于平淡的,无法泛起什么涟漪的真相,人们似乎一直更倾向于所谓“盛大的虚假”之中——难以置信的,惊天动地的,无比感人的,令人流泪,抑或是让人感到愤慨而握紧拳头的,即使这“盛大”的背后并不是事实。

    上述的现象目前已经几乎成为社会的常态了,这对于真正尊重事实和真相的人来说,似乎是一个比较绝望的信号:越来越多的人们选择放弃真相,加入名为“新闻”的虚假狂欢之中。可是,事实终究是不会骗人的,无论新闻如何报道,也不论世界上的大多数人如何评价,事实仍旧在原位等待着,不会改变。这就如电影中所提到的:

    “美国其他的地区都在歌颂巴尔托的伟大事迹,可全世界的雪橇人都争先恐后想要Togo的后代”

    这一句话,便是多哥为自己争得的,最大的荣誉。

  • 「2024春晚」节目印象及评分

    舞蹈 《锦鲤》

    总评:8.5分

    舞蹈本身非常飘逸灵动。不同于传统的舞蹈形式,本节目运用了比较创新的威亚形式与舞蹈表演结合,很飘逸,很喜欢!

    同时本节目的配乐也符合舞蹈风格,属于加分项。

    魔术《守岁共此时》

    总评:7.0分

    玩牌虽然玩的好,但是形式感觉有点过于老套了,本来打算给6.5;不过最后的“半张牌匹配”的数学逻辑游戏还是挺有小心思的,加0.5。

  • 「杂谈」《魔法少女小圆》追番记录

    序言

    早在高中的时候就多次听别人提到这个番剧,也时不时会接触到一些“魔法烧酒”的梗。大学之后也和同学再次聊到过这部番剧,当时同学给出的评价是:“这部番剧,成功抢夺了二十一世纪ACG圈子中魔法少女一次的定义权”。虽然不知是否有如此程度,不过话已至此,又怎能有理由再不去看一下呢?

    注:本文包含极大量对于本番的剧情以及人物讨论,属于强剧透文章,请确认后再进行阅读。

    EP01

    约定俗成的规矩了,第一集的OP和ED我是要听一下的。听到这个OP,我似乎就回到了十几年前的那个动漫的世界。2012年的番剧,大多数OP的风格,乐器选择以及编曲等等都非常有那个时代的特点,以至于即使不告诉我这个番剧的名字和其他信息,光是听OP就知道这肯定是一部老番。

    另外通过这个OP还可以听出的便是番剧的剧情类型和走向。很明显OP的旋律并不是非常愉悦和欢快,而更像蕴含着什么令人叹惋的故事之类的,不过这一切都只有看完后才知道了…

    另外不得不说本番的配乐确实挺有特点的。特别是每次进入战斗的时候,音乐确实有一种所谓“魔法少女”的感觉了,尤其喜欢麻美学姐战斗的这个专属BGM,很有救赎的感觉!

    非常期待本番后面配乐方面的表现!

    EP02

    第二集开始,就逐渐开始介绍最重要且与主线最息息相关的一些设定了。比如所谓“魔法少女”和“魔女”的定义,签订契约成为魔法少女的过程,以及与魔女战斗之后获得的“哀叹之种”(Grief Seed)。

    第二集就提到了魔法宝石可能会变浑浊的点,说明了哀叹之种可以用于恢复魔法宝石的清澈,恢复魔力。这很难不让人往前联想到麻美学姐提到的,魔法少女之间的资源争夺的情形。这里我个人推断,所谓的资源争夺,很有可能就是指对于“Grief Seed”的争夺,大家都需要恢复魔力,需要保持自己灵魂宝石的清澈,可是于此对应的宝贵的“哀叹之种”却是有限的。

    这里其实还埋下了很多疑问的种子,比如以下几个:

    • 为什么所谓最重要的“哀叹之种”的资源是有限的,或者说明是什么让现有的魔女产生了竞争关系。
    • 灵魂宝石变浑浊意味着什么,对于魔法少女本身来说又有什么影响。
    • 灵魂宝石会变浑浊,需要定期使用哀叹之种来恢复魔力,保持清澈;那么如果没有了哀叹之种,灵魂宝石不断浑浊之后,又会发生什么呢?

    这里最重要的问题应该是最后一个,其也可能成为本番主线剧情里面的一个关键点。所谓的“成为魔法少女”的代价,真的只是需要和魔女战斗这么简单吗?如果仅仅如此,为何那位与圆没什么关系的转学生晓美焰要对圆发出那种劝告呢?一切都指向一个结论,那就是事情肯定不止这么简单,同时这名转学生也很可能经历过不为人知的故事。不过终究这一切都需要观看后面的发展才能下定论。

    同时在人物刻画的剧情推进上,编剧也采用了很常见的对比手法。在当前的剧情中,把麻美同学塑造成一个善解人意,乐于住人的好人形象,一个正义的“魔法少女”,而将转学而来的焰同学塑造成一个有点不解风情和不讲道理的形象。不过既然编剧都这么写了,那我们也很容易推导出事实应该并不是这样的(这点在圆的台词上也有所反映,当其好友说焰同学性格不好,惹人生气,定义为“不好的人”的时候,圆有一句内心独白“真的是这样吗”),如上所说,焰同学肯定也拥有着属于自己的故事,进一步推断,焰同学劝说圆不要签订契约成为魔法少女,大概率也是出于自己所经历的一切。这种剧情安排虽然看起来略显明显和简单,但不可否认的是确实对于剧情的推进和后期的反转起到了铺垫作用

    EP03

    这集又是开始与魔女的战斗。圆一直在思考关于成为魔法少女那个契约的愿望。她和沙耶香对于所谓“愿望”的事都不是非常明确。

    在本集中上条正式出现在镜头之中,剧情中上条似乎得了重病卧在床上,而沙耶香跟上条似乎又有着共同的回忆。结合前几集沙耶香提到的“有更需要这个契约的人”,以及本集中提到的“想为他人实现愿望”的点,合理的猜测沙耶香应该是对上条有着感情,想帮助上条实现他的愿望。可是这种想法也得到了麻美学姐的警告:“你究竟是想帮他人实现愿望,还是想成为为他人实现愿望的人呢?”,虽然描述相似,但实际上是两个完全不同的概念呢,如果不想清楚,之后“可是一定会后悔的”,麻美前辈如此说到。

    而圆则是收受到了来自于母亲的启发,母亲作为职场强人,并不是所谓的“热爱工作”,根据爸爸的说法,母亲是一个“热爱努力”的人,追求的是一种克服苦难和阻碍之后的成就感。

    圆感觉自己并没有什么过人之处:成绩一般,人缘也不算很好,小圆看到了麻美学姐作为“魔法少女”与魔女战斗,保护他人的景象,这默默地在小圆的心中种下了种子。在本集中与麻美学姐的对话中,小圆也已经表达了自己的想法,“成为魔法少女,能帮助他人,保护他人”,这边是小圆最大的愿望了。

    接下来便是麻美与魔女的战斗情节,早在战斗开始之前,编剧就已经埋下了伏笔:“这次的魔女和以前的都不一样”,焰学姐如此向麻美学姐一行人警告到,并要求麻美学姐带走小圆,可是麻美并未听取建议。

    麻美的死

    我想到了要出事,没想到出这么大事(悲),实话说我挺喜欢麻美学姐的战斗BGM的,不知道这样一来是不是意味着以后再也听不到了…

    这里我有点不喜欢的,就是编剧对于“沙耶香”这个角色的塑造。在麻美学姐战斗失败被魔女杀死之后,焰学姐出现将剩余的人救下并补刀杀死魔女。可是掉落了“哀叹之种”后,沙耶香却开始对着焰学姐发脾气。

    这里很明显是编剧故意的安排,我个人感觉是编剧想要增强对比感,为之后焰学姐可能的“洗白”,“反转”和“真相大白蓄力,原来如此”的剧情蓄力。虽然也确实能起到这种效果,可是这么做我个人感觉会伤害对于沙耶香本身形象的塑造,降低观众的观影体验(毕竟在这种情况下,质疑焰学姐很明显是一种偏向“无理取闹”的行为,是剧情里的任何角色都应该避免的)

    EP04

    本集又提到了了麻美前辈的死亡,“在那个世界撕掉的话,连尸体都不会留下”,对于现实世界中的人,就等于失踪了一样。而焰同学把此事告诉小圆后,小圆则说自己“永远不会忘记麻美前辈”,而重点在于,焰同学随即说,只是这样,只是在死后被人“记住”,就已令人“羡慕不已”,可见这里编剧进一步增加了焰学姐个人剧情的神秘性,让人很想知道这样一个人背后,到底发生了什么。

    此外,对于焰学姐这个人,剧情似乎给予了她与别人不同的战力水平。先是上集的战斗剧情,麻美学姐没能拿下魔女,释放终结技后,补单没能消灭魔女,反而被反杀。而焰学姐则有自信能够解决这个魔女(刚开始焰学姐要求麻美撤出战斗交给自己),并且后面也确实在麻美学姐死后,成功击败魔女并且救出小圆和纱耶香。另外,在本集与小圆的交谈之中也提到了,焰学姐见证了数不尽次数的,其他魔法少女的死亡,而焰学姐本人至今还存活着,从侧边上也交代了焰学姐的战力应该不是普通水平。并且说到这里,我们也可以回想起来前几集的剧情有提到焰学姐作为转学生,参加运动会时可谓大放光彩,甚至突破了地区记录,可见身体素质十分强硬。

    这集结束剧情上给了个大爆点。

    究竟是为什么,为什么所谓“守护都市与人们”的魔法少女,会为了“哀叹之种”大打出手,甚至不惜为了一片地区的活动权,而下狠手“除掉”其他的魔法少女呢?这个第二集埋下的伏笔,至今仍未揭晓。

    同时还有一个问题:根据剧情,纱耶香应该是以“让上条的手恢复”作为愿望,而成为魔法少女的。这种剧情走向实际上导致我对于纱耶香这个角色的印象再下一层楼。她日复一日,毫无任何回报的为上条付出,去医院看望上条,帮上条找唱片,安抚上条的情绪;而反观上条,态度让人难以琢磨,有时找纱耶香帮忙找唱片之后会表示感谢,还邀请纱耶香一起听,而本集中,却又对着纱耶香,这个对自己可以说最上心的人发泄怒火。而问题就是在这种情况下,纱耶香前脚还在忍受着上条无理取闹的发脾气,后脚就开始觉得上条很可怜,愿意为了上条的恢复签订契约成为魔法少女。由于我还没有看后面的剧情,不能妄下定论,可是就从到此为止的剧情考虑的话,我个人感觉,这种行为,用“恋爱脑”来形容实在合适不过。

    EP05

    本集首先想说的还是关于上条与纱耶香相关的剧情设定。如果用现在的评价标准来说,我个人感觉上条妥妥的在对纱耶香进行PUA。首先是在生病期间脾气来回切换(见上方EP04笔记),然后等自己回复之后,心情好了,又开始向纱耶香道歉“我当时不应该那样的”,在这样的剧本之下,我个人对于上条目前没有一点好感。而纱耶香,她可以说是太单纯了,她为了上条甚至愿意付出自己的一切,愿意为了上条的康复而签订契约,冒着死的风险走上魔法少女之路。这样的纯真可以被认为是美好的品德,可是在残酷的现实中,这也可以是致命的。

    这一点不用再等,在本集的后半部分就得到充分的证明。首先我认为本集最绝的便是小圆与焰学姐在咖啡厅的谈话。

    小圆在与焰学姐的交谈中提到,纱耶香是一个“温柔,有勇气,为别人拼尽全力”的人。“可对于魔法少女来说,这些东西都是致命的”,这边是焰学姐给出的回答。显然她没有说谎。

    “过度的温柔会导致天真,蛮干就会大意,无论付出多少都不会有回报”,这是焰学姐对小圆的回答,也可以认为是焰学姐对于整个魔法少女世界的认知与概括。

    过度的温柔;纱耶香从一开始成为魔法少女的原动力就是来自于内心的,对他人的“温柔”,为了他人许愿,为了他人冒险,为了他人成为了魔法少女,这又何尝不是“为他人拼尽全力”呢?自己作为见习魔法少女,在不确定能不能击败对方魔女的情况下,带着自己最好的朋友小圆一同进入结界,如此高风险的决定,不就是所谓的“蛮干”吗?而如此“蛮干”导致的“大意”,最终也差点导致她死在同行的刀叉之下。这一段对话完美的概括了纱耶香在剧情中拥有的所有标签,而这也似乎在隐喻着纱耶香成为魔法少女后将要迎来的结局。

    此外,本集也向我们揭露了纱耶香眼中那个美好的“魔法少女”的世界的真实面目。大部分的“魔法少女”并没有像纱耶香一样,把所谓的“拯救他人”,“世界和平”作为自己作为魔法少女的责任。魔女使者不掉落哀叹之种,于是就不杀,等魔女使者杀死几个人类,成长为魔女之后,再击败来获取哀叹之种。这种情况下的魔女不再是传统世界观之下的“英雄”,而变成了残酷现实中那个食物链顶端的“狩猎者”,他们的生存注定建立在食物链更低端的生物(魔女,亦或是——人类)的牺牲之上。

    此外,在这个“食物链”框架之下,名为“魔法少女”的同类也保持着竞争关系,虽然编剧在这个时刻没有说明魔法少女以及哀叹之种背后隐藏的机制与秘密,但是我们暂且可以推断出哀叹之种是个对于魔法少女极其重要并且具有一定稀缺性的物品,魔法少女需要竞争,有竞争就有胜利与失败,而在这种情况下的失败,有时候便意味着死亡。

    纱耶香,魔法少女的世界,也许,并不是你所想象的那样呢。

    还有一个比较有意思的设定:魔法少女的能力跟签订契约时的祈愿有一定关系的,比如纱耶香,因为其祈愿内容与“恢复”有关,其成为魔法少女后也拥有比常人更长的恢复能力。这里便埋下了伏笔:焰学姐的能力和当时的祈愿又有何联系呢?只能在后面的剧情中再见分晓了。

    EP06

    第六集这里提到了,只要拥有足够的“哀叹之种”,就可以随意的挥霍魔力使用魔法,而沙耶香只要没有足够的“哀叹之种”,便永远不可能打败可以随意“滥用”魔力的杏子。这是否是对上面提出问题的一个回答呢?

    在这种定义下,如果我们将所谓的“哀叹之种”带入现实世界中的金钱,也许会更好解释和理解一些。有没有哀叹之种本身都不会对魔法少女造成威胁,就如本身有没有钱都不会成为一个人的软肋。而当“魔法少女”开始追求“更高的力量与能力”之时,其对于哀叹之种的欲望便会被无限期放大,无穷无尽:没有一个魔法少女会觉得自己已经够强了,不再需要积累哀叹之种了;就如作为社会体中一部分的人,永远对金钱保持着极高的欲望,永远不会觉得自己的前足够多了一样。

    “只要你还没有收集到更多的哀叹之种,你就不可能战胜杏子”

    当沙耶香决定要和杏子比拼的那一刻起,这名少女就已经落入了这个深渊,她开始追求更强的力量,追求比杏子更多的“哀叹之种”,以求打败杏子,这么做的结果,最终多半也是落得,与所谓“其他魔法少女”一般,被“悲叹之种”所奴役的结局。

    这集的小圆和妈妈的夜谈也颇有深意。

    小圆和妈妈分享了自己的苦恼,“明明大家都是正确的,为什么最后不能得到幸福呢?”,同为魔法少女,几位却不能互相帮助,相互之间会大打出手,甚至会想要致对方于死地。

    这种苦恼并不只是存在于这个虚构出来的,名为“魔法少女”的世界中。现实又何尝不是这样呢,我们就如小圆妈妈口中说的,每个人“都坚信着自己认为正确的正确”,而正是这种固执,让每个人都离幸福越来越远。到了最后,每个人都没有做错,而每个人却又无法达到那个美好的结局。

    没有完美的答案,“犯错吧”,母亲如此告诉小圆。我们也许应该学会接受不完美,完不成的目标,那就学会放弃。无法实现的请求,那就学会拒绝;无法接受的现实,那就学会适应。我们都在自己坚信的“正确”中犯了错,可从某种角度下,我们也许正在做着正确的事情。

    EP07

    “为他人祈愿之人啊,究竟能收获何种结果呢?”

    本集揭露了杏子背后的故事,也是整个番第一个公开其成为魔法少女背后的故事的魔法少女。其为父亲祈愿,看似获得了幸福,可谁知最终被父亲叫做“魔女”,将整个家庭引入绝望与死亡之中。用杏子自己的话来说,“私自为他人祈愿,最终就不会有美好的结局”。

    在昔日杏子父亲所使用的残破教堂之中,杏子把这一切告诉了沙耶香。沙耶香也是一个为“他人”祈愿的人,他为了上条而祈愿,成为了魔法少女,可她又是否能收获美好的结局呢。关于这一点,本集中编曲其实已经开始埋下了伏笔。

    没想到编剧在前六集一直把这个雷埋在沙耶香的身边,自己亲手救下的最好的闺蜜,现在反而变成了情敌。

    沙耶香得知此事后,与小圆表示自己“有一瞬间后悔了”,后悔“当时救下了仁美”这件事。我个人感觉这里沙耶香的心理活动实际上标志着沙耶香个人心境的一个转折点。还记得当时沙耶香成为“魔法少女”的理由可是非常正义的:保护大家,帮助他人,成为一个“守护者”的存在。可现在呢?她的想法逐渐开始转变,从前面剧情提到的,与杏子见面开始,对同为魔法少女的同类起了杀心;逐渐开始对“哀叹之种”的追求;以及本集后面战斗剧情中,开始接受自己灵魂被抽离的事实,运用丘比的建议阻断所有痛感。

    这一切似乎都在标志着沙耶香正在一点点朝着无法遇见的深渊前进,这也开始与焰学姐之前所说的话相吻合了,“这样的选择一旦做出,就无法在改变了:就跟人死了不可能在复生一样”,小圆应不应该放弃沙耶香,等待着沙耶香的,又会是怎样的命运呢?

    此外关于本集还有一点,那就是我们可以看出,每一个前期剧情所谓可恨的人,其背后大多也都蕴含着常人不知的可悲之处,杏子家破人亡的过往便是一个实例,而我个人感觉等待着沙耶香的结局也不会如她想象一般的美好。而这里又给观众留下了期待:竟然杏子有着自己的故事,那么焰学姐,麻美前辈会不会也还有隐藏着的故事呢?这里比较期待。

    EP08

    这一集开始小圆与纱耶香在雨夜的争吵算是一个小的呼应。小圆目前是关心纱耶香的,她一步步看着纱耶香走向深渊,小圆不想如焰学姐所说放弃纱耶香,她想让纱耶香恢复正常。可是另一方面,纱耶香无法接受小圆的这一份情感。

    “你明明什么都能做到的,却在旁边眼睁睁的看着,我可是替你受罪的”

    纱耶香这份责备让本来就自责的小圆更加责备自己。小圆对好友纱耶香的关心,被认为是“站着说话不腰疼”,而好朋友的责备又有将小圆引入名为“魔法少女”的深渊的趋势。上面的种种都在某种程度上照应了前面小圆与妈妈聊天的内容。小圆和纱耶香坚持着自己所认为的“正义”和“正确”,小圆一直尝试将纱耶香拉回自己认为的正轨,而纱耶香得知了灵魂的内幕之后,也开始按照自己的理解,接受了关于“魔法少女”的残酷的设定,站在双方的角度上看,自己的行为都没有什么问题,可大家却都无法获得幸福的结局。

    EP08绝对算得上是一个剧情上的一个重磅节点。

    首先就是关于纱耶香的“彻底黑化”这一个点。早在之前,纱耶香就已经说过,自己要成为一个“跟其他人不一样”的魔法少女,她想成为一个真正正义的,帮助他人的魔法少女。想法虽好,果然却终究无法如愿啊。就如焰学姐在之前剧情中所提到的“魔法少女的祈愿产生希望,而这个愿望的实现,一定伴随着等量绝望的产生”,一个个人在纱耶香的帮助下得救,获得希望,可于此同时,等量的绝望与“哀叹”也逐渐在纱耶香的灵魂中积累着。

    纱耶香有着守护世界,守护他人的“希望”,与之对应的,这个世界也为她带来了等量的绝望。首先是心爱之人被好友“夺走”,自己为了上条,付出了难以想象的代价,签约成为魔法少女,出卖了自己的“灵魂”。而此时此刻,却只能偷偷看着自己的心爱之人与自己的好朋友放学之后走在一起有说有笑。在地铁上,听到男人对于陪酒女的不尊重发言,对于陪酒女感情的玩弄,不禁“含沙射影”式的想到了自己的经历。

    “这个世界,还有守护的价值吗?”,这灵魂一问,彻底击穿了纱耶香的内心。

    为什么焰学姐要这么说?焰学姐又是怎么知道这么多内幕的?灵魂被绝望侵蚀的后果又会是什么呢?这一切都在本集做出了一定的回答。

    首先说焰学姐的背景故事线。本集剧情中,小圆出于关心寻找纱耶香,差点在怂恿之下与丘比签订契约成为魔法少女,关键时刻被焰学姐“闪现击杀”(这里实际上并不能真正杀死丘比,在后面的剧情有提到),组织小圆签订契约。

    这里有一个需要提前说明的非常关键的点:焰学姐两次尝试击杀丘比的肉身,导致丘比看出了焰学姐施法能力的奥妙:“时间操控”。这非常关键,这之后焰学姐向丘比表示,“你想做的一切,你的最终目的,我都十分清楚”。这里进一步让丘比得知,焰学姐实际上是来自另一个世界线的未来之人。有了这个信息,我们就得以做出很多其他的解释和推断。

    这里焰学姐对小圆说“你这样不珍惜自己”,知不知道“关心你想要保护你的人有多么困扰啊!”,再加之小圆的脑海似乎闪过了关于焰学姐的记忆,这里可以推断出,在焰学姐之前的世界线中,小圆与焰应该是有着比较紧密的关系,并且可以推断出焰学姐的世界线最终迎来了Bad End,因此焰学姐才会说要“阻止这一切”,阻止纱耶香黑化,阻止小圆成为魔法少女,这都是焰学姐的目标。

    顺着这个点来说,记得前面的剧情也提到,焰学姐一直着力于阻止小圆成为魔法少女,这是为什么呢,下面也有对应的推断。在准备签约之时,丘比揭露了小圆作为潜在的魔法少女人选的“不可思议的潜能”,如果愿意,甚至连“宇宙的真理”都能改变。这是何等之大的祈愿,而上面提到的,希望与绝望总是等量的产生(这一点是来自于另一条世界线的过来人焰学姐之口,可信度非常高),那难以想象,如果小圆最终走上纱耶香的“黑化”道路之后,又会给自己,甚至是整个世界,带来怎样的“绝望”呢

    此外,关于前面焰学姐与杏子的谈话中的一些点也说得通了。比如焰学姐给出了“魔女之夜”最可能发生的地点,并表示自己的推测给予“统计”,现在我们便知道,应该是焰学姐根据自己在另一条世界线的一次次“魔女之夜”的经历中统计出来的。

    此外,本集还给出了一个非常重要的剧情设定,那边是所谓“魔女”的诞生。其实之前就已经有过铺垫,“魔法少女”意味着希望,“魔女”意味着绝望,而我们又已经得知了“希望与绝望互相守恒”的“归零定律”,那么再深入想一想,这又会意味着什么呢?

    纱耶香以灵魂为代价,为我们给出了答案。

    早在之前就有过这种想法,魔法少女有着“灵魂宝石”,而魔女则是“哀叹之种”,这之间是什么巧合吗?

    并不是,纱耶香的“灵魂宝石”,终究经不住绝望的积累而碎裂开来,而碎裂开来的所谓“灵魂宝石”,也有着一个更加为人熟知的名字:“哀叹之种”

    本集的结尾,这个猜想由丘比之口亲自证实。而丘比真正的名字,是“孵化者”,这是否在表达,丘比实际上就是一直不停的孵化着一个个魔女的罪魁祸首呢?

    EP09

    本集彻底揭露了所谓“魔法少女”存在的真相。丘比所在的文明,作为宇宙高级的文明,遇见了宇宙由熵增而走向彻底沉寂的结局(这里我个人认为应该指的是宇宙的热寂学说)。丘比提到了“熵”的概念,事情总是自发的朝着更加混乱的方向发展,如果想要一部分事物逆熵而行(恢复秩序),那么就必定会使得其他地方的熵增加,总之,整个封闭体系内的熵不会减少。

    这种所谓的“熵增不可逆”定律,对于宇宙中的文明来说是不可接受的,这意味这无论多么璀璨的文明,都终将走向灭亡,走向一个“任何地方都没有什么不同”的“热寂宇宙”。而丘比所生活的文明,发现了一种可以突破熵增定律限制的东西,“感情”。可惜丘比所在的种族没有感情(这点从前面的剧情中已经体现出来了,也算是一个剧情设计上的呼应),于是他们最终找到了人类,让少女这种“感情能量转化效率最高的”的人类,成为宇宙逆熵而行的动力源,为整个宇宙续命,这便是“魔法少女”的本质。

    到现在看来,前面的剧情也有在为这个设定做铺垫。比如一直提到的“希望与绝望的等量性”,少女祈愿的同时,世界上也必须产生同样的诅咒,而这在现在看来,就是“魔法少女”变成“魔女”之后诅咒人类。少女在“魔法少女”时期救了多少人,就要在灵魂宝石破裂之后,同等的给予人类等量的诅咒,于是乎,希望与诅咒便平衡了。

    本来平常的世界,由于“魔法少女”的祈愿,出现了一个个本来不可能实现的“奇迹”,而于此同时,越大的奇迹的诞生,也意味着将来会有一个魔女用等量的绝望诅咒着人类。现在来看,这不就是一个“逆熵”的过程吗?

    另外丘比没有感情这一点在本集剧情中再次得到印证,丘比为了让小圆最后不得不成为魔法少女,故意不告诉杏子她的计划必定失败,而是让杏子白白送死。这样一来,小圆就只能成为魔法少女才能从名为“魔女之夜”的浩劫中保护人类。这一点在本集也得到了呼应。

    杏子战斗之前,跟小圆说过任何一个人“如果不是迫不得已,不会做冒着生命危险战斗这种事”,并对小圆说,“就算是你,也有不得不像我这样做出决定战斗的时刻吧”。我个人感觉,这里就相当于在剧情上暗示小圆最终会签订契约成为魔法少女了。

    EP10

    没想到啊没想到,原来是这么一回事。

    本集终于交代了重要剧情人物晓美焰的来历以及其背后的故事。晓美焰拥有的能力是时间回溯,这点前面也提到过,当时我的猜想现在看来还是过于保守了。当时的我认为晓美焰来自于另外一个Bad End时间线,对了,但没完全对。实际上,晓美焰已经经历了无数次的“Bad End”了。

    在最开始的那个世界线上,小圆受到麻美学姐的吸引成为魔法少女,最后却在魔女之夜战斗而死。就是在那一刻,属于晓美焰的命运齿轮开始转动。她签订了契约,以“再次与小圆相遇”为愿望,成为了魔法少女。从那时开始,她便一次次从头经历着这一切,试图找出可以拯救鹿目圆的方法,可直到如今,她也仍然是一次次的迎来失败的结局。

    这里面有几个世界线值得重点说一下。首先是其中一个鹿目圆作为魔法少女,成功在魔女之夜的战斗中胜利的时间线。虽然魔女之夜这个坎成功度过了,但事情其实并没有变得更好。就如前面所提到的,魔法少女终究成为魔女,且散发出与其之前希望等价的绝望。在这个时间线中,鹿目圆作为奇迹般的魔法少女,拥有着很大的“希望”的力量,那么不出所料,当鹿目圆陨落后,自然也成为最令人绝望的魔女。

    另外一个世界线,便是晓美焰与鹿目圆在魔女之夜都战斗至奄奄一息之时,鹿目圆用自己藏着的一个哀叹之中拯救了晓美焰,而自己在临死之前,对晓美焰许下了自己最后的愿望,希望晓美焰能够回到过去,拯救那个“被丘比”欺骗的自己。正是这条时间线,让晓美焰一直坚持在名为“无穷”的迷宫里,寻找那个能让大家都获得幸福的唯一出口。

    EP11-EP12

    这两集主要就是交代剧情上的最后结局的,剧情方面这里不再重复说明。

    首先让我感觉到比较有意思的,还是鹿目圆在出发前往帮助焰学姐之前,与她妈妈的谈话。就如纱耶香死后,小圆朋友们的父母之间有过的交谈一样:“这个年纪的孩子,不知道什么时候就会变成大人呢…”。这句话为后面小圆与妈妈的交谈埋下了伏笔。

    没错,经历了这么多的小圆,从某种意义上,已经不再适用“小孩子”这个词来称呼了。她亲眼见证了朋友之间的战斗,死亡;亲耳听到,甚至身临其境地体会到了所谓“魔法少女”的残酷的真相。她可能比更多“大人”还要认亲现实,也同时在不知不觉之间,被赋予了比“大人”门更加沉重的命运,的承担着比很多“大人”所更多的责任。

    而小圆的妈妈也在本剧中也非常给力,在一次次不经意的谈话之间,向小圆,或者说向观众,揭露了很多人生的真理。上面的笔记也有提到,在小圆面对苦恼的时候,也是小圆的妈妈,向小圆道出了事情背后的本质,并鼓励小圆,要学会“犯错”,即使不被他人理解,也要尽力做到自己想做到的事情,守护自己想要守护的东西。

    小圆也听进去了,这一次,即使有着被自己最亲的妈妈误解,责骂的可能,她也最终选择了站出来,为焰学姐而奋斗,为全世界而奋斗。

    在剧情上面,我个人的理解是,这是名为“鹿目圆”与“晓美焰”的两名少女,互相救赎的故事

    最初的最初,最开始的世界线上,晓美焰真的只是一个普普通通的转学生。而鹿目圆作为她的同伴同学,不但在班级里给予了这个内向的小女孩更多的关心和鼓励,同时也在晓美焰即将被“魔女”的“绝望”所诅咒时,及时击败了魔女,从其手中保护了焰,一切命运都从此刻开始流转。

    剧情上大家都知道了,焰一次次的经历着同样的折磨,同样的绝望。她想要从所谓无法逆转的结局中,救出这个名为“鹿目圆”的少女,事实却并不如愿。即使已经在几乎同样的世界线中重复了无数次,但是晓美焰仍然无法找到那个美满结局的“正确答案”。

    在这个过程中,有许多事情在逐渐的发生着不可逆的改变。一方面,晓美焰在一次次的重复中,不断的与魔女们战斗着,由原来的青涩害羞的少女,逐渐变成一个有着强大实力的“魔法少女”。但同时,晓美焰的精神和意志,也在不断被消磨着。到最后,她已经快要忘记了最初自己的信念和坚定。她唯一记得的事情,便是要“拯救鹿目圆,拯救那个少女”——这边是她最后的希望,“最后的路标”。

    于此同时,由于晓美焰的一次次时间回溯,导致多条世界线与鹿目圆的命运所绑定,导致了鹿目圆背负了及其巨大的“因果”,这也是鹿目圆会变成“超乎想象的强大”的魔法少女,同时也是“超乎想象的绝望”的魔女的原因。用丘比的话说,正是晓美焰一次次救赎的尝试,最终导致了鹿目圆更加悲惨的命运,晓美焰,才是那个真正的“幕后凶手”

    可真的是这样的吗?并不然。已经知道剧情的我们,知道小圆最后成功凭借如此之强大的“因果”,进行了何种祈愿,又产生了何种奇迹。小圆拯救了世上所有魔法少女的这一愿望,从某种角度上来看,也是晓美焰一次一次不愿放弃的回溯与尝试所铸就的。如果没有焰学姐永不放弃的坚持,鹿目圆自然也就无法完成如此颠覆“因果观”的祈愿。

    在我看来,晓美焰拯救了鹿目圆,而鹿目圆给予了世界救赎。这个世界,当然也包括你啊,晓美焰同学。

  • My self-introduction

    Basic Information

    A 19-year-old university student from China, major in Software Engineering (could be considered as Computer Science in US maybe).

    My Hobbies

    • Anime (I’m a big fan of ACG culture lol)
    • Video Games & Mobile Games.
    • Programming. This is why I’d chose that major.
    • Reading News (Usually Tech/Politics related).
    • Listening to music (EDM, Light music, ACG music,Anime/movie OST, etc.)

    My Languages

    English:

    Intermediate maybe (Since I’m not quite sure if I reach the intermediate level).

    Chinese:

    I’m a native speaker of Mandarin and it’s my mother language. Could offer help about pronunciation, writing, grammar etc.

    Other details

    • Timezone: UTC+8 Beijing/Shanghai
    • Text / Voice Memo Available.
    • Voice Chat is ok if we are both free, but not so high frequency. (For example maybe one time pre week)

    Hobby Details

    I started watching anime from when I was about 10, and now anime is one of my major entertainment in my spare time, and which has already become a part of my life.

    I have watched a bunch of animes (40+ in estimate) with different genres, the most impressive ones for me has been listed below:

    • Clannad
    • Violet Evergarden
    • Plastic Memory
    • Frieren: Beyond the Journey’s end
    • Your Name

    Here is full list of the anime I’ve watched.

    Screenshot of my watched anime

    I also play mobile ACG gacha games, like Genshin Impact and Blue Archive. And I’m trying some PC games like Black Myth: Wokong recently.

  • 「杂谈」《中二病也要谈恋爱!恋》追番记录

    EP01 –  复活的…邪王真眼

    都看完了才发现选错集了,标题就不改了()

    不行了不行了看的时候已经笑死了…

    剧情推进的重要一步就是Morisummer和早苗同学的“认亲”场景。新一季的设定让我更加喜欢早苗这个角色了,从性格还是颜值方面我都很喜欢,认亲之后性格突变的早苗也很可爱!

    这种画风的早苗真的很少见呢()

    上面的认亲当我没说…

    一切又回到开始了这下。

    看完之后

    后面看的太起劲了,都没怎么闲的下来写记录了。总体来说感觉比S1多了一些喜剧元素,看了前面四五集,几乎快要定义成“中二病”+“日常”+“恋爱”题材的娱乐番的时候,谁曾想到,七花线上场了。

    这个番剧的优点之一,我个人感觉便是对于角色的塑造。我个人感觉这部番剧几乎所有的重要配角都塑造的很好(注:重要配角这里指的是登场次数较多,但不是主角的角色,比如丹生谷,凸守等等;类似于一色诚这种角色实际上不太能定义成“重要配角”,不过就算不是重要配角,剧中对于这个角色的塑造的水准也仍然不低)。

    我个人感觉,至少前两季看下来,如果要求我投票选出本番中最喜爱的角色,我可能反而不会选择主角。主角需要承担为主线服务的主要职责,在某些情况下,反而会损失掉部分塑造人物独立性格的机会,而配角则没有这个烦恼。丹生谷(丹妈)和凸守这两个角色我倒是尤为喜欢。丹妈不用说,几乎是本番中的半个主角,有着足够多的剧情联系,甚至有着大量围绕丹妈的剧情支线,将其人设塑造的很完整和很立体。包括过去的“中二病”黑历史,与凸守渐渐发展起的友情等等。而凸守对于我来说则是本番的可爱担当,我单方面评为本番最可爱角色!另外也承担了本番大部分的喜剧担当,各种搞笑欢乐的情节都少不了凸守。可于此同时,第一季与勇太在电车下的会话也让人看到了这位小可爱的另外一面,那个懂事,成熟,关爱他人的一面,可以说这是一个完整的角色,一个值得被喜爱的角色。

  • 「杂谈」《中二病也要谈恋爱!》追番记录

    本篇将会包含该番剧剧情相关内容以及人物性格特点与背景故事等等,为强剧透文章,若还没有观看完原作的建议待追番完成后再阅读本文。

    关联番剧:中二病也要谈恋爱!

    EP05 – 束縛の・・・十字架

    这一集个人感觉主要的功劳在于加深六花角色的个人故事塑造和背景补全。以到未花家补习为契机,引入对于六花平日生活情况的介绍,姐姐工作日常年加班不能准时回家,而通过交换邮箱和更改邮箱名称的剧情,又说明六花身边其实没有什么能陪盼着她玩耍与成长的朋友(联系方式只有姐姐十花和之前唯一的中二病玩伴凸守早苗)。

    凸守早苗

    这种属性和人设其实增加了六花的可怜感,给人一种更想去关爱她,陪伴她的感觉,同时也从一定程度上合理化了她一直拥有中二病状态的这一点:就算生存与孤独的现实之中,内心也有属于自己的美好世界。这也许才是六花一直无法摆脱中二病的实质吧——那是真正的,属于她自己的乐园;如果“治好”了中二病,是否又意味着要和自己唯一的朋友说再见了呢?这个我们作为三次元的观众,也不得而知了。

    除此之外,上述提到的这种人设也与前面几集树立起来的“中二病”形态的六花人设产生了对比,前面几集的六花给人一种傻傻的,纯真可爱的少女的感觉,包含着青春与纯真的感觉,而这集又描述出一个缺少陪伴的,孤独的六花形象,在角色塑造上增强了角色的立体感和真实感。

    顺带一提,我认为在这个时间点开始往六花角色深度塑造方面的努力是合理的,如果太早的开始塑造,六花的中二病方面的人设可能就还立不住,盲目的增加角色的人设广度可能会导致观众一时无法接受,给人一种过于匆忙的感觉。而本集(第五集),六花前期的基本人设已经可以算立稳了,在这之上引入新的人设就没有过于突然的风险,观感会相对舒服和自然一些。

    再顺带一提,就看到目前为止,早苗是长得最戳我XP的一个角色(确信)。六花应该也挺好看的,可惜我本身就更加偏爱长发/双马尾这些要素,再加上六花的眼罩我不是太喜欢(如果眼罩摘下来应该能加点分!不过估计还是干不过早苗(笑)

    Pixiv链接:https://www.pixiv.net/artworks/105088866

    EP06 – 贖罪の・・・救世主

    好好好摸jiojio都这么熟练了是吧勇太(恼)只能说制作组确实太懂了。

    看完全集之后才领悟到本集标题的含义。这集首先回应了番剧刚开始对于“给班级女生排名”一事,在剧情上取到了Callback的作用,同时也通过这个时间衍生出被发现之后的一系列故事。总体给我的感觉就是这部番的人设都透露出其他番剧少有的一种真实感。虽然说番剧的一大重点放在了中二病上,但是剧本并没有完全放开自己进行畅想,而是保持了相当程度的与现实社会的统一和克制,让观众看起来会有一种:“啊这个剧情确实有可能出现在日常校园生活中呢…”的这样一种感觉。

    对于一色诚的人设来说,他本身作为一个处于青春期的高中生,确实像是会做出“给班级中的女生排名”这种事情,但编剧并没有选择为了节目效果把人物的人格和设定标签化和极端化(这是相当一部分番剧会有的问题,角色个性非常单一和强烈,虽然可以提高观众对于人物的印象,可是也会因此显得有点过于理想化,让观众很难把世界观与现实生活相关联,降低了上文所提到的“真实感”),而是又通过主动认错,成为“救世主”从而保护班级里其他男生免于被追责的情节,塑造出了这个角色的另一面,同样,这也是一个现实生活中的人本该拥有的样子:现实中没有绝对的标签化,一个人会有坏的一面,也会有好的一面,会有缺点但肯定也存在优点,这才是真实的世界,真实的人。这点在后面一色诚宣城要剃头可是后面又不太愿意的剧情上又得到了再次体现。

    可以发现就在之前的一集(EP05),编剧同样也在六花身上应用了相似的手法,增加了六花的立体性,实际上我认为也起到了避免标签化,增强真实感的作用。

    EP08 – 二人だけの・・・逃避行

    注,此部分同时包含“EP07 – 追憶の・・・ 楽園喪失”的内容。

    可以说,这两集是剧情发展的关键帧。EP07中首次引入了可以称之为是主线剧情的事件,介绍了名为“小鸟游六花”的少女背后的故事。交代了数年前六花父亲意外身亡的重要剧情信息。从剧情上来说,这个设定无疑起到了很好的推动剧情发展的作用。首先就比较合理的解释出为什么六花会变成现在这种“中二病”的状态:当时的六花无法接受突如其来的悲痛事实,可以说通过所谓的“中二病”,欺骗自己所谓的“彼方的世界线”的存在,来降低自己的心理压力,缓解自己的悲伤。编剧出了正面描写该剧情事件外,还花费了一些笔墨勾勒了六花家庭成员的情况,说明了几乎所有六花的亲人都不太能接受六花的“中二病”行为,爷爷并不喜欢六花这个状态,奶奶虽然也心疼六花,可是还是对六花的“中二病”感到无可奈何。

    而姐姐十花的人设更加丰富,一方面,姐姐并不像爷爷那样排斥与讨厌六花的这种行为,而是愿意包容六花,一直在生活上关爱与照顾着自己的妹妹。这点剧情中都有侧面描绘出来,包括班里的同学都发现六花的便当非常丰盛,在班里甚至成为了话题,以及后面EP08中勇太带六花去便利店购买食物时,六花提到的“姐姐平时不让我吃便利店的东西”;这些点都可以映射出十花对于自己妹妹的关爱。

    可是另一方面,姐姐对于六花的“中二病”实际上也并不认可。剧情中也清晰的表达出姐姐希望六花恢复正常,直面现实的态度。可就是这样,十花还是一遍遍的,可以说不厌其烦的陪着妹妹玩着她认为“幼稚”的游戏,这店令我感到一丝温暖与感动,也许就是亲人之间说不清的感情羁绊吧,即使是中二病的妹妹,她也愿意始终站在她的旁边,替她接受冰冷的现实,承担生活的压力,给予她作为姐姐的关爱与陪伴,这也许就是亲情的伟大吧。

    此外,这两集也借剧情推进的节奏将两人的关系进一步拉近,在知道六花的心事之后,勇太一步步的接受六花的“中二”,陪六花寻找“彼方的世界线”,六花也渐渐在在勇太身上,看到了一个属于过去的,熟悉的身影。

    我认为这里可以说是非常漂亮的一笔,六花这一刹浮现出的存在于过去的美好的回忆,瞬间提升了勇太在六花心中的地位与重要性,也真正在这两个角色之中建立了一种比所谓的“青春的悸动”更上一层的,更加牢固和重要的羁绊

    “你 [邪王真眼] 的世界中所缺失的那份美好,就由我 [Dark Flame Master] 来为你补全吧。”,如此给了我这样一种既视感。

    她们逐渐开始了解彼此的故事,分享彼此的喜悦。彼此的心中都逐渐开始萌发出不知其名的一份情感,作为世界之外的观众,我着实感到欣慰,也期待着属于她们的故事。

    EP09 – 混沌の・・・ 初恋煩

    好好好,在经历的前几集的相对沉重的氛围之后,本集终于正式扣题,踏入“中二病”的恋爱主题!这里就相对来说没有什么需要深入分析的东西了,整个叙事基调又回到了番剧刚开始的那种相对轻松愉悦的感觉上,颇有一种青春轻喜剧的感觉,喜欢!

    同时也终于知道丹生谷为什么被称之为“丹妈”了,真是煞费苦心啊(笑)。对于六花对于自身情感的描写也显得非常可爱,无法理解处于青春之中的自身内心的情感这一点,又为这位中二少女增添了几份纯真之感,让我更加喜欢这个人设了。

    愿你们能得到美好吧~

    EP12 – 終天の契約

    从EP10开始,剧情又再次回到主线上,经过了之前这么久的铺垫和渲染,编剧在这里也开始酝酿一个情绪的积攒和爆发。男主尝试让六花放弃所谓的“中二病”,回归到世人看来的“正常”的生活中去,可这么做也意味着要求六花放弃一直以来的保护伞,意味着她需要真正的面对眼前一直不愿接受的现实。这里的剧情走向大部分观众也可以猜到,六花在经过一段时间的心理挣扎以及尝试对现实的妥协之后,还是在最后选择了做回以前那个“中二病”的自己。

    这一段剧情蕴含的感情还是很强烈的,与我而言相对于前几集来说,这一段剧情就没有前面提到的那么具有真实性:可能是因为剧中的故事本身就很少会在现实中出现过,又或者是我没有足够的人生阅历,所以无法与剧情的走向发生共鸣吧。但这其实并不影响整体的观感,剧情对于勇太和六花的内心刻画都下了功夫,描述了六花内心的纠结与挣扎:自己是否真的要走出之前一直保护着自己的那个,“中二病”的世界了呢?同时,也描述了男主将六花拉出“中二病”的世界时的纠结和迷茫:对于六花来说,究竟哪边的世界才是她喜欢的呢,哪边的世界才是她真正需要的呢?自己这么做,又究竟是否算是在帮她呢?

    与此同时,我也很喜欢这个番剧对于丹生谷和早苗的角色塑造,丹生谷其实也知道上面提到的一切,她知道六花和勇太内心的纠结,迷茫与不知所措。都说,有一种成长叫做妥协。作为中二病毕业的她,背后又拥有着什么故事,我们暂且不得而知,可她确实也在用着自己的方式帮助着六花,她知道六花终究得迎来属于自己的“成长”,她也尊重六花和勇太的这次尝试,一直帮六花和勇太营造环境,帮助六花接受现实。

    早苗也是一样,作为“邪王真眼”的Servant,其实她心中也明白这一切。这里不得不提到我非常喜欢的两端演出,都是关于丹生谷和早苗的。一段是丹生谷拽住尝试“拯救”中二病毕业的六花,被丹生谷硬拉出房间,而之后两人又在房间外抱在一起哭泣的剧情。另一段就是早苗与勇太在车站的对话,面对勇太的“彼方的世界线什么的,根本就不存在!”如此的质问与呐喊,早苗几乎以泣不成声的语气说道:“你说的这些,我当然知道啊!”

    是的,她当然知道,作为初中年级第一的佼佼者,又怎么可能不知道这一切都是心中的幻想而已呢,大家其实都明白的,六花,勇太,丹生谷,又或是早苗,他们全都明白大人口中的,所谓的“成长”与“现实”之类的东西。可那个他人眼中臆想出来的,虚假的世界中,又在她们人生的某个阶段,为他们带来了确确实实的温暖。对于她们来说,这个世界在某一个时刻,就是他们内心与灵魂的港湾,保护她们免受现实中“狂风骤雨”的打击,正是因为有着这样一个港湾,她们才得以成长为现在的自己,从这个角度看,“中二病”又有什么不好的呢?

    总而言之

    我个人认为这是一部比较均衡的番剧,经费方面自然不用说,作画和音乐我认为都维持在较高的水准上。在剧情和演出设计方面,我很喜欢作者所谓“穿插式”的剧情处理方式,相对沉重和低气压的主线剧情,和更加轻松愉快的中二日常,以及青春的爱恋主题穿插在一起,让这个番拥有了多种不同的味道,各种情绪之间也起到了互相调和的作用,提高了整体的观感。同时,一方面借由中二的主题,部分剧情中的表演显得具有幻想性,相对来说大胆一点,而另一方面又如上文提到的一般,剧情的设计以及人物的性格设定等等也拥有较强的立体性和真实感,总体来说是一部很不错的番剧。

  • 「编程笔记」ST表的实现与使用

    ST表,全称SparseTable,也叫做稀疏表。是用来解决区间和和区间最大最小值问题的一种工具。其实推广开来,其可以用来解决任何可重复贡献(associative)问题。

    使用条件

    可重复贡献问题

    ST表要求其处理的问题必须具有“可重复贡献”这一特征。具体是什么意思呢?

    假设有操作F,使得F(a, b, c) == F(F(a, b), c) == F(a, F(b, c)),则称F符合可重复贡献问题的特征。

    如图,不难发现max()最大值函数就符合可重复贡献问题的特征;读者可以自行验证,sum()min()等函数都符合这个特征,这也证明了ST表可以解决最大最小值以及区间和等问题。

    元数据可不能改变噢

    在使用ST表解决问题时,我们必须确保所有的查询结束前,ST表所对应的元数据都不改变。

    有些数据结构(比如线段树)在元数据更新之后(比如原来的数组中,某个数值由3变成了5),可以有对应的事件复杂度比较低的方法对结构进行更新,以达到一边更新一边查询的效果。ST表则无法提供类似的方法,所以确保你的问题中没有要求在查询期间动态调整元数据的要求。

    SparseTable意义与使用

    接下来,我们采用由表及里的过程,先了解ST表的意义以及使用方法,之后再来说明如何生成ST表。

    一些准备——向下取整的Log2函数

    由于SparseTable的特性,无论是根据数据生成ST表,还是得到ST表后对数据进行查询,都会比较频繁的用到向下取整的log2函数,所以特地说明。我们对于向下取整的log2运算稍加分析,可以得到log2(x)向下取整的具体意义是:

    对于某一个数N,返回可能的最大的数字n,使得2的n次方小于等于N,且2的n+1次方必定大于N。

    比如对于7,log2(7)向下取整为2,2的2次方不超过7,但可以保证2的3次方一定大于7(8>7)。

    了解了这个之后,让我们来看看SparseTable如何快速解决规模庞大的可重复贡献问题吧~

    ST表中数据的意义

    我们接下来选择一个经典的可重复贡献问题——区间最大值问题,作为示例。

    假设我们有一个数组 {3, 2, 1, 4, 5, 9, 7}, 其数据元素个数为7,要求必须在非常低的事件复杂度内,查询某个特定区间(比如从下标0到下标5)的最大值。此时,如果直接循环求解,会导致复杂度随着查询区间长度不断增高,这就是ST表登场的时候啦。

    如上图,对数组进行处理之后,就可以得到下方的二维数组,也就是我们大名鼎鼎的SparseTable——ST表。那么问题来了,图中ST表中的数据,到底具有什么含义呢?

    首先需要知道的是,ST表正常情况下使用一个二维数组st[idx][pow]来储存。下面对这个二维数组每一个位置元素的意义做出解释:

    • 数组中,每一个特定位置(idx, pow)的值,都代表对应问题在某个区间的解。
    • 这个区间的开始坐标为idx。
    • 这个区间的长度为2的pow次方。

    例如,对于区间最大值问题,假设原数组为arr,处理后得到的ST表中,st[1][2] = 5,则说明:原数组,从下标为1开始,长度为2^2=4的区间内,最大值是5。

    特定区间的查询

    知道了ST表的数据的意义,我们就可以着手解决特定区间查询问题。

    这里需要注意的是,虽然ST表可以解决不同的可重复贡献问题,但是其在面对不同的可重复贡献问题时,最优查询方式可能有一定的区别。接下来,我们先通过上方的“区间最大值”例子,介绍一下区间最值问题的ST表查询。

    合适的长度

    首先,为了降低时间复杂度,我们希望用尽可能少的区间查询来拼凑出完整答案。可以证明,在ST表处理区间最值问题时,无论区间长度位置,我们都可以用ST表支持的两个区间,拼接出答案。比如对于区间(1, 6),可以由区间(1, 4)和区间(3, 6)区间的结果再求最值得到。对于“最值”问题,我们只需要保证选择的区间完整覆盖住所求区间,且不超过所求区间即可,而这多个区间允许有重复部分。

    同时,为了保证所用区间尽可能少,每个区间就要尽可能大。这个时候,上方说到的log2向下取整计算就派上用场了。由于ST表代表的区间长度只能是2的n次方倍,所以,不超过区间范围的区间,其最长长度就是log(区间长度)向下取整。

    比如对于(1,6)区间进行最值计算,log2(6)向下取整=2。说明只需要在合适的位置,用两个长度为2^2=4的区间覆盖即可。这代表了,我们要取的数据肯定在ST[idx][2]内——我们确定了pow。

    合适的位置

    我们已经知道了,只要位置安排合理,我们肯定能用两个长度为4的区间覆盖住(1, 6),那么这两个区间的位置,应该如何选择呢?

    思考之后发现,我们肯定希望:

    • 第一个区间尽可能往左,也就是第一个区间的起始下标就是总区间起始下标1。
    • 第二个区间尽可能往右,也就是第二个区间的结束下标就是总区间结束下标6。

    如上图,最终,我们可以得到:

    • 第一个区间为(1, 4),最大值为5。
    • 第二个区间为(3, 6), 最大值为9。

    我们对这两个区间的最大值再求一次最大值即可,最终答案为max(5, 9) = 9

    如果用ST表来计算,运算过程如下:

    max(st[1][2], st[3][2]) 
    = max(5, 9) 
    = 9

    是时候该自己实现ST表啦

    如果您已经掌握了上面所说的,ST表的工作方式,那么恭喜你,欢迎来到ST表的DIY小课堂(bushi),在这里,你将学习如何通过自己的双手书写代码,为一个个数组生成属于他们自己的SparseTable!

    初始化

    初始值

    根据ST表的定义,我们不难得到一个结论,即:

    ST表的第一列数据 st[idx][0],与元数据arr[idx]完全相同。

    更加准确的说,应该是 st[idx][0] == F(arr[idx]),其中F是本ST表所对应解决的可重复贡献问题。而由于我们以区间最大值为例,所以F(arr[idx]) == arr[idx],最终得到st[idx][0] == arr[idx]

    表的长和宽

    解决完初始值,还有另外一个问题,ST表的大小。

    我们已经可以确定,表的行数(第一维下标)就是数据个数,比如对于7个数据的数组,生成的ST表肯定有7行。那么一个ST表有多少列呢?

    ST表有多少列,取决于查询时最多可能用到第几列的数据。根据ST表的区间查询原理,不难得到,对于数据个数为N的数组,其ST表的最大列数,就是log2(N)向下取整。为什么呢?——因为最坏情况下,需要查询整个区间范围的数据,这时,查询区间长度最大,为N,查询时会调用到的区间的纵坐标(上文的pow),正是log2(N)向下取整。

    解决完上面的问题,总算是万事俱备了,我们开始对ST表进行初始化:

    逐步推出整个ST表

    接下来的问题便是,如何计算ST表剩余其他部分的值。我们仍然需要从ST表的定义入手,不难发现,由于ST表中的数据本质上就是某个区间的结果,所以更大区间的结果可以由多个小区间结果拼接而来。意思是,我们可以通过表中左边列数据,一步步推出右边的列。(因为左边的列代表范围更小的区间,右边的列代表范围更大的区间,且相邻列的长度差一定是2倍)

    由上面的思想启发,我们发现,对于某个位置的ST表st[idx][pow],其左边的ST表列数据已经可用(毕竟我们决定从左边往右边推,那么推到pow列的时候,ST表的pow-1列肯定已经完成计算了),其刚好可以由左边列的两个区间st[idx][pow-1]st[idx+2^(pow-1)][pow-1]相结合获得。

    不要看公式复杂就放弃理解噢~,不难发现,其实其思想与上方”ST表的使用“中所提到的”区间查询“,运用了一样的思想。两个区间都尽可能大,同时一个尽量往左,另一个尽量往右。

    上图就是对某个ST表位置进行求值的示意。知道了某个点的求值方法,我们只需要从上到下,从左往右不停循环,直到求出整个ST表即可。

    需要注意,ST表中部分位置没有值,这是因为其对应的区间已经超出范围,比如st[4][2],计算可得,该区间结尾下标为7,但是原始数据个数为7,说明最大下标为6,故该点不应该存在数据,即使存在,查询时也肯定用不到(读者可以自行思考一下,为什么查询的时候不可能调用到这类数据点)。

    实战环节!

    至此,有关于ST表的所有理论思路都已经介绍完成啦,下面我们借用洛谷上的ST表模板题,来介绍一下ST表的实战,以及一些注意事项。

    先放上题目AC代码:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    
    using LL = int;
    
    using namespace std;
    
    LL st[100000][18] = {0};
    
    LL log2Table[20] = {1};
    
    inline int read()
    {
        int x = 0, f = 1;
        char ch = getchar();
        while (ch < '0' || ch > '9')
        {
            if (ch == '-')
                f = -1;
            ch = getchar();
        }
        while (ch >= '0' && ch <= '9')
        {
            x = x * 10 + ch - 48;
            ch = getchar();
        }
        return x * f;
    }
    
    void initLog2Table()
    {
        for (int i = 1; i < 20; ++i)
        {
            log2Table[i] = log2Table[i - 1] * 2;
        }
        return;
    }
    
    LL logLowerBoundTable[100010] = {0};
    
    // 这里实际上是在对上文提到的那个,重要的log2向下取整函数,进行事先缓存,以提高一些查询效率
    void initLogLowerBound(const LL &numCnt)
    {
        logLowerBoundTable[0] = -1;
        logLowerBoundTable[1] = 0;
        for (LL i = 2; i <= numCnt; ++i)
        {
            logLowerBoundTable[i] = logLowerBoundTable[i >> 1] + 1;
        }
    }
    
    int main()
    {
    
        // init log2 table
        initLog2Table();
    
        // input data
        LL numCnt = 0;
        LL queryCnt = 0;
        numCnt = read();
        queryCnt = read();
        initLogLowerBound(numCnt);
    
        for (LL i = 0; i < numCnt; ++i)
        {
            st[i][0] = read();
        }
        
        // 这里是在计算,对于数据量N,ST表最多需要的列数是多少
        // 上文已经提及
        LL maxLayer = logLowerBoundTable[numCnt];
        for (LL curLayer = 1; curLayer <= maxLayer; ++curLayer)
        {
            // LL rightBound = numCnt - log2Table[curLayer];
            for (LL curIndex = 0; curIndex <= numCnt - log2Table[curLayer]; ++curIndex)
            {
                // calculate current arr value
                st[curIndex][curLayer] = max(st[curIndex][curLayer - 1], st[curIndex + log2Table[curLayer - 1]][curLayer - 1]);
                // cout << st[curIndex][curLayer] << "   ";
            }
            // cout << endl;
        }
    
        // deal with query
        LL left, right, intervalSize, maxLogNum, maxNum;
        for (LL curQuery = 0; curQuery < queryCnt; ++curQuery)
        {
            left = read();
            right = read();
            // turn into 0-index
            maxLogNum = logLowerBoundTable[right - left + 1];
            cout << max(st[left - 1][maxLogNum], st[right - log2Table[maxLogNum]][maxLogNum]) << "\n";
        }
    }

    no endl bro, use ‘\n’ please…

    这点与ST表这东西其实关系不大,只是提醒下各位,在这种IO看起来就非常耗时的情况下,使用endl进行换行,会出乎你意料的大幅度增加算法的耗时,同样,对于这道洛谷模板题,如果使用endl,几乎必定超时。对应的解决方案是使用’\n’进行换行。

    你可能会问,为啥endl比’\n’更加耗时呢?至于这个问题,我也不敢说我完全了解,但可以确定的是,当你在输出流输出endl时,程序做的远远不止是换行这一件事,其中还包含了包括flush等很多其他的工作,这些工作会导致其开销远大于换个行这件事情本身。详细信息欢迎读者上网查询了解。

  • 「编程笔记」关于Bellman Ford单源最短路算法

    开始之前

    本Blog之前已经介绍过一种单源最短路算法——Dijkstra算法。但Dijkstra算法也有着自己的缺点,其中最明显的问题就是无法处理带负权边的图,其原因与其算法中包含的贪心原理有关。

    而接下来介绍的算法,则拥有处理负权边的能力,该算法就是Bellman Ford单源最短路算法。该算法的核心思想是,对图中的每条边,都进行足够次数的Relaxation(松弛)操作,从而逐步推导出每个点距离出发点都最短路径长度。

    关于Bellman Ford算法的原理和代码实现,网络中已有大量优秀的资料,这里便不再说明算法本身的详细工作流程。接下来着重说明一些Bellman Ford算法中一些限制条件,及其相关的一些理解。

    Bellman Ford算法特性

    当出现负权回路时…

    在通过Bellman Ford算法计算单源最短路时,会要求所计算的图中不得存在权值为负值的回路。这个限制相对较好理解,下面举一个简单的例子。

    如图,图中的A->B->C->A便是一个负权回路。而假设我们现在需要以A点作为出发点计算最短距离,请问A->D的最短距离应该是多少?不难发现这里出现了死循环。我们可以从原点出发,不停的走A->B->C->A这条路,每循环一次,我们距离出发点的距离就会越来越小。这也就意味着,只要我们的路径不断的在负权回路中重复足够多次,每一个点距离出发点的距离都可以认为是无穷小,这显然是不合理的。

    负权回路对于图来说是存在特殊意义的,比如在经济学的部分领域中,“负权回路”是一个非常具有吸引力的词,因为可能代表着可持续的收益链,也可以代表着套利的机会,但Bellman Ford不认这些,在单元最短路算法的世界中,我们暂且不接受“套利机会”的存在。也就是说我们不允许待处理的图中出现负权回路,以此来保证计算结果是有意义的。

    对于Bellman Ford算法的一些理解

    迭代次数的理解

    Bellman Ford算法的核心思想,在于每迭代一次,就对所有边进行遍历,并执行Relaxation操作。这里不难发现,迭代k次时,得到的结果,可以保证至少是路径条数为k时的最优解

    为什么说是至少呢,因为其遍历的结果可能跟边遍历的顺序有关,如下图:

    如图,我们发现对于图中的无向图,如果从左边的边开始遍历,实际上遍历一次之后我们就已经得到了最优解。而如果从右边开始遍历,我们就需要遍历3次才能得到最优解。

    按照这个思路理解,不难推出,遍历k次时,得到的答案,只能保证,至少是路径条数为k限制下的最优解。

    这里对路径条数做出说明,一个路径由多个边组成,上方所说的“路径条数”,指的是对于某条路径,其经过的边的个数的和。

    为什么迭代次数等于点的个数?

    上方我们已经论述了迭代次数k的意义,迭代k次时,得到的结果至少是路径条数k情况下的最优解,部分点的数据可能比会更优,但对于所有的点,只能保证其为路径条数k情况下的最优解。

    那么我们到底需要迭代几次呢?根据定义,我们将问题转换成为:对于一个无向图,其某个点A到某个点B的全局最优路径中,最多可能经过几条边。

    经过思考之后发现,最坏情况下,最优路径将会不重复的经过所有点。接下来对这个结论进行简单的说明:

    首先是经过所有点。如果我们想要强迫最优路径经过尽可能多的点,最坏的情况之一,便是这个图形成了一个没有分叉的纯线性结构(就像上方对于迭代次数解释时所用图一样,每两个点用一条边链接,总边数为点数-1),这样从最左边到最右边的点,最优路径边毋庸置疑是经过所有的点。

    其次是不重复。为什么我们可以确保最优路径中不会重复经过同一个点呢?这从某个角度上来说得益于算法前面的一个前提条件——不允许负权回路。想象一下,如果路径重复经过了同一个点,说明这个路径必定存在一段回路(从重复点出发,经过某个路径,又回到重复点)。而此时如果这个回路确定不是负权回路,那么说明如果跳过这段回路,我们可以得到一个权重更短的路径,反向说明了目前的路径不是最优路径。因而可以确定,如果一个路径被确定为最优路径,且该图中没有负权回路,那么这个路径绝对不会重复经过同一个点。

    说明完毕,接下来让我们看看这两个结论,不难发现,不重复经过所有点,那么对于一个点个数为N的图,符合条件的路径,最长只能是N-1(因为一旦大于N-1,说明必定要产生回路,与条件冲突),所以最终确定,如果需要得到全局最优,其最少迭代次数为N-1。

    综上所述,容易得到,算法的时间复杂度为O(N*M)。其中,N为点的个数,M为边的个数。

    为什么它能攻克负权边?

    在Dijkstra算法的文章中,笔者提到了一个观点,Dijkstra的核心是基于贪心的,而贪心带来了局部最优解这一隐患。带着这个角度再来看Bellman Ford算法,是否有一种熟悉的感觉?Bellman Ford算法的每次迭代都基于上一次的迭代结果。先知道路径条数1情况下的最优解,再根据此状态推出条数2情况下的解,以此类推最终得到路径条数为N-1时的最优解(也就是全局最优解),是不是有点「动态规划」的味道了呢?正是借助这这种工作模式,不像Dijkstra算法一样看到一点点甜头就着急的把点Close掉,Bellman Ford拥有了不被眼前甜美假象迷惑的能力,坚持着自己的本分,不断想着正确的道路一步步迈进,最终终于得到了令人满意的结果。

    相关链接

    GeeksForGeeks Bellman Ford算法介绍(英文)

    「编程笔记」Dijkstra算法为什么无法处理带有负权边的图

  • 「编程笔记」Dijkstra算法为什么无法处理带有负权边的图

    前言

    Dijkstra算法是一种可以计算有向或无向图中单源最短路的算法。其工作模式与图的BFS(广度优先遍历)有些相似,通过类似于广度遍历的方式,逐渐从某个设定好的起点向外推进,一步步的计算出所有点到该点的距离。

    本文不过多介绍Dijkstra单源最短路算法本身,如果仍然没有掌握该算法,可以先自行了解该算法的工作模式。下面提供一些可供参考的资料:

    知乎:通俗易懂理解——dijkstra算法求最短路径

    负权边对于Dijkstra算法的影响

    Dijkstra算法工作模式

    要了解该影响,首先需要明确Dijkstra算法的工作模式。其维护两个点集合。一个是“仍未确定最优解的点(S)”,一个是“已经确定最优解的点(U)”。且有一个重点:在算法工作期间内,如果某点被认为已经得到最优解,则该点会被从S移动到U,可以认为,从此以后该点已经被Closed(关闭),即解已经确定,且不容被更改。

    为了方便,我们称在S中的点为opening vertex,U中的点为closed vertex

    当图中出现负权边…

    了解这一点后,让我们来看看下面这个图片示例,看看当负权边出现在图中时,可能会对算法造成什么影响:

    Dijkstra计算带有负权边的图

    如上图,假设我们尝试使用Dijkstra算法,计算该图中各个点距离C点的距离。

    图中,绿色的点为closed vertex,白色的点为opening vertex,点上方的方框代表该点的,实时更新的计算距离。

    1:算法首先锁定C点,将C点到C点的距离标记为0,并认定为最优解,然后根据C点尝试更新与其相连的opening vertex的距离(这里为A,B点,得到更新后距离是为1和5)。

    2:剩余的opening vertex中,A距离出发点(C点)最小,距离为1,故锁定A点,(注意:锁定A点说明算法认为A点的最优解就是1,且之后算法也不可能再次更新A点的距离值,因为A点已经为Closed状态了),同时,锁定A点之后,再次更新与A点相连的opening vertex的值(与A点相连的点有B和C,但因为C点为closed vertex,故仅仅尝试更新B点的值),计算得到B点最新距离为min(5, 1+(-10)) = -9

    3:最后,锁定B点,算法计算完成。

    上方便是Dijkstra算法在示例图中的运行步骤和结果。不难发现,算法对于A点的最短距离出现了计算失误:实际上,A点的最短距离走法并不是C->A (1),而是C->B->A (-5)。

    怎会如此?

    分析之后可以发现,Dijkstra算法的核心,就在于每次都选择S集合中距离最小的点,并将其锁定,再通过这个点进一步更新其他点的距离。但为什么Dijkstra认为S集合中目前距离最小的点就是最优解呢?有没有可能从其他的点出发可以得到更小的距离呢?

    比如在上述的示例图中,锁定C点后,算法认为A点的距离是1,B点的距离是5,所以A点的距离为1一定是最优解。那么有没有可能实际上1并不是C到A的最优解,我们通过B点走其他的路径最终可以得到更小的解呢?

    答案是,当边的权值非负时,不可能,当边的权值存在负值时,则有可能。

    当权值非负时,B点已经离出发点有5点的距离,所以所有从出发点出发经B点的路径,其长度必定大于等于5,但是当权值存在负数的时候,这一点就无法确定,经过B点的路径如果后续经过负权边,其路径长度总和也有可能再次小于5,此时,我们就无法确定C->A的1距离一定是最优解了,因为我完全有可能经由B路径得到一条总距离小于1的路径到达A。

    上方的论证可能并不全面和严谨,不能作为Dijkstra算法相关特性的严格证明,但对我们进一步理解Dijkstra算法有着一些帮助。

    一些有趣的说法

    不难发现,实际上Dijkstra算法的设计和「贪心」有着很大的联系,实际上在S集合中选点就是一种贪心的行为。而我们都知道贪心算法的局限性,就是在部分情况下,其可能陷入局部最优解。而我们可以认为,当Dijkstra遇上负权边,就导致了其中贪心部分陷入了局部最优解(只考虑眼前的最短边(比如在5和10两条边中毫不犹豫的选择5),而忽略了目前看似落后的边未来的长期收益(比如那条权值为10的边链接的点,接下来将经过一条绝对值非常大的负权边-10000之类的),这也警示我们不要贪图眼前的小利,眼光应当长远(雾

    如果我就是想拿下负权边呢?

    噢亲爱的读者,相信我,不止你一个人有这种想法;实际上上百年前就已经有两名小伙想要拿下他,他们的名字分别是Richard Bellman 和Lester Ford Jr,接下来,就是Bellman Ford算法的表演时间了。

    如果你对与这个Bellman Ford算法感兴趣,可以在互联网上找到很多关于这个算法的优质教程,其通过一次次迭代,对边进行Relaxation操作,实现了对于单源最短路径的求解,在本Blog的另外一篇文章「编程笔记」关于Bellman Ford单源最短路算法 中,也对这个算法做出了一些讨论,希望能对您产生一些帮助和启发。