闲话 22.8.11

闲话

今天的歌是《再会》!

两个人的再会

只此一次的再会。

どんな声か覚えてるかな
你还记得我的声音吗
どんな風に話してたかな
还记得我们是怎样说话的吗
すっかり背が伸びたお互い
我们都长大了啊

正義とか常識とかさ
正义啊常识什么的
疲れちゃうよね正直ね
说实话挺累人的吧
秘密基地の中には
秘密基地里
そんなものはない
不会有这样的东西存在

約束しようふたりは
一起来约个定吧
ずっとこどものままで居よう
永远当个孩子就好
誰も傷つかないなら
谁都不会受到伤害
思い出のままにしよう
化作回忆里不变的样子

ふたりだけ花びらの散るように
两个人恍若花瓣凋零一样
幼気な春風に舞うように
在稚嫩的春风里起舞一样
どんな少女でも終わりは美しく
少女结束的那一刻总是那么美
ふたりだけ飛ぶ鳥の落ちるように
两个人如飞鸟坠落一般
手を繋いで星の裏側まで
想一起牵着手飞到
飛んで往きたい
那颗星球的背面

そういえば泣き虫だよね
说起来你可是个爱哭鬼呢
必死こいて隠してるよね
而且用尽全力假装坚强
立派になるもんだお互い
我们都成长了呢

大人って面倒くさくて
大人们什么的麻烦死了
疲れちゃうよね正直ね
说实话也挺累人的吧
みんなきっと
大家肯定会慢慢遗忘
忘れてくこどもだったこと
自己曾经也是个孩子

冒険しようふたりは
一起去冒个险吧
大人達とお別れさ
该和大人们告别了
生きることってこうだろう
活着就是这么一回事了吧
息を吸うことじゃないだろう
不只是单纯地呼吸着而已吧

ふたりだけ当たり前を知らないで
不知道常识的两个人
徒然な後悔も言わないで
不会落寞地去后悔
どんな言葉も無いほど麗しく
无法用言语来描述她们的美丽
ふたりなら落ちる陽の寂寞も
两个人一起的话,那落日的寂寞
藍がかった星の裏側まで
哪怕直到蔚蓝星球的背面
覚えておける
也能记得住吧

タイムリミットの鐘が鳴る
最后的钟声响起
ふたりは置いていかれる
她俩要被遗留下来了
大人達が憂いてる
大人们担心着:
あいつは正気じゃないと
这小家伙俩没事吧…?
タイムリミットの鐘が鳴る
最后的钟声响起
ふたりは確かに生きている
她俩确实都还活着

ふたりだけ花びらの散るように
两个人恍若花瓣凋零一样
幼気な春風に舞うように
在稚嫩的春风里起舞一样
そんな最期ならふたりに相応しい
这样的结局和她们俩多相称
さんざめくこの世界にさよならを
挥手告别这个喧闹的世界吧
手を繋いだままなら
她俩就这样握紧着手
二度とこない再会
在这只此一次的再会

可以说这首歌是整张专辑的高潮部分
激越的曲调超越了riri,更能深入人心
歌词也是,用“大人”与“儿童”之间的错位去抒发情感
回忆整首专辑,饭都是在以儿童的眼光去歌颂爱与美丽
但总是以儿童视角描述不切实际的美就会脱离现实
在其中,饭也在向世界的阴暗面发问
由于故事背景的特殊性,作者能够更加自如的笔墨针对放大的矛盾点发言
这点在《秘密》中体现得更加明显
同时,为了故事性,饭也在曲中谈及两个人之间的交往与情绪
情感集中在《若能化作彗星》中出现,而交往更多在《约定》中。

分析就到这里吧(
春卷饭真的很厉害

今天jijidawang的歌词是《暖暖的星》!是春卷饭为2020年雪未来写的歌呢!
虽然是很温馨的歌,但也有着饭的深思呢
我正好忘记保存这首歌的歌词了
谢谢你,Non-Explicit

一道dp

给定一个长为 \(n\) 的排列 \(a\)。定义 \(\forall 1\le x < n,\ a[x]\)\(a[x+1]\) 相邻。定义对序列的操作,每次都将与更大数字相邻的数字删去,比如 \([5,4,2,3,1]\) 经过一次操作会变成 \([5,3]\)。容易发现在经过 \(k\) 次操作后序列中只会剩余一个最大数字 \(n\)。给定 \(n,k\),回答有多少长度为 \(n\) 的序列经过恰好 \(k\) 次操作后剩余一个数字。答案对 \(998244353\) 取模。

\(n,k \le 5000\)

由于标题,考虑dp。我们发现,一个数字最终会被删除,当且仅当其左右两侧有一侧存在比它大的数字。同时我们针对它为最大值的区间进行dp。

我们设 \(f[i][j][k][l]\) 为满足最大值为 \(i\),共需操作 \(\le j\) 次,左侧 [k = 0时无,k=1时有] 比目前区间最大值更大的数字,右侧 [l = 0时无,l=1时有] 比目前区间最大值更大的数字的所有连续子序列的数量。容易发现 \(f[n][k][0][0] - f[n][k-1][0][0]\) 即为答案。考虑分别讨论四种情况进行dp。

  1. \(f[][cnt][0][0]\)
    目前为[0][0]时,左右都没有比他大的数字,考虑枚举最大数字的位置
    钦定左边有k-1个数字,右边有i-k个数字,区间总长度为 \(i\),这样左右的可能性可以表为 \(f[k-1][cnt_{\text{l}}][0][1]\)\(f[i-k][cnt_{\text{r}}][1][0]\)
    由于左右都比他小,因此可以考虑在删除左右最大数时用本身替代,因此 \(cnt_{\text{l}}\)\(cnt_{\text{r}}\) 可以取到 \(cnt\)
    在值域上考虑,我们可以随意在i-1里选择k-1个数扔到左边,因此系数为 \(C_{i-1} ^{k-1}\)

  2. \(f[][cnt][1][0]\)
    目前为[1][0]时,左边子区间外有比他大的数字,右边没有
    因为枚举的是它的子区间,因此左区间外左区间最大值左侧同样有比它大的数,因此左侧 \(f[k-1][cnt_{\text{l}}][1][1]\) ,不考虑右侧,因此为 \(f[i-k][cnt_{\text{r}}][1][0]\)
    因为左区间被删完后需要再操作删掉目前区间的最大值 因此 \(cnt_{\text{l}}\) 需要取到 \(cnt-1\),右侧无限制
    同样值域考虑 乘入组合数 \(C_{i-1} ^{k-1}\)

  3. \(f[][cnt][0][1]\)
    与2同理,不再赘述

  4. \(f[][cnt][1][1]\)
    此时区间两端都有更大的值 需要排除不可能的值 考虑稍微容斥一下
    首先需要枚举两个区间所有可能之和 \(f[k-1][cnt][1][1] \times f[i-k][cnt][1][1]\) 此时是不考虑删除的
    然后考虑目前区间的最大值被左右端最大值阻塞的可能,这些可能分别为 左端删了cnt次: \(f[k-1][cnt][1][1] - f[k-1][cnt-1][1][1]\) 和 右端删了k次 \(f[i-k][cnt][1][1] - f[i-k][cnt-1][1][1]\)
    减去二者相乘的可能性即可。
    记得乘组合数

然后就愉快地结束啦!枚举情况然后dp即可。

复杂度分析:
由于每次删除都至少会删掉一半的值,因此 \(k = O(\log n)\) 。由于需要枚举状态,最坏复杂度为 \(O(n^2\log n)\)

这里是代码
get(n), get(rime);
rep(i,0,n) C[i][0] = 1;
rep(i,0,n) rep(j,1,i) C[i][j] = (C[i-1][j-1] + C[i-1][j]) % mod;
rep(i,0,rime) rep(j,0,1) rep(k,0,1) f[0][i][j][k] = 1;
rep(i,1,n) rep(j,1,rime) rep(k,1,i) {
	f[i][j][0][0] = (f[i][j][0][0] + 1ll * f[k-1][j][0][1] * f[i-k][j][1][0] % mod * C[i-1][k-1]) % mod;
	f[i][j][1][0] = (f[i][j][1][0] + 1ll * f[k-1][j-1][1][1] * f[i-k][j][1][0] % mod * C[i-1][k-1]) % mod;
	f[i][j][0][1] = (f[i][j][0][1] + 1ll * f[k-1][j][0][1] * f[i-k][j-1][1][1] % mod * C[i-1][k-1]) % mod;
	f[i][j][1][1] = (f[i][j][1][1] + ((1ll * f[k-1][j][1][1] * f[i-k][j][1][1] % mod - 1ll * (f[k-1][j][1][1] - f[k-1][j-1][1][1] + mod) % mod * (f[i-k][j][1][1] - f[i-k][j-1][1][1] + mod) % mod) * C[i-1][k-1] % mod + mod)) % mod;
} printf("%d", (f[n][rime][0][0] - f[n][rime-1][0][0] + mod) % mod);
posted @ 2022-08-11 21:23  joke3579  阅读(58)  评论(0编辑  收藏  举报