闲话1.4

发布时间 2024-01-04 20:53:19作者: crimson000

今天依旧有点摆???

上午看了俩根号分治题,感觉很牛。然后就开摆了?,上午摆了差不多一个半小时吧?。下午感觉不能开摆了,写了个 CF 题,看了俩小时题解写了 15min 代码?。有点抽象的,*3300 不是我该做的题?

在 apj 的博客里发现了一句感觉很牛的话啊:

先对自己说句话:你觉得没用的算法不一定没用,别太自以为是在那里一遍一遍叫 "stop learning useless algorithm",最 useless 的是你。

过两天打 hello2024?,话说 Hello BPM 2024 发了吗???,想听。

但是机房好像只有两张床垫啊,我、潘队还有 haosen 打。我觉得可以这样分:潘队睡一个床垫,我和 haosen 睡一个床垫,挺不错的,我们仨应该都会同意这个分法???

今天打冰与火爽到了?,打交打爽了?

虽然是宽判过的,而且准度丢人(

现在在练习土耳其进行曲那个谱子(,感觉是打交、双押练习曲啊?,但是我真的无法理解在交互的时候还得用第三根手指头打双押的脑梗操作???

在 LA 群看到 lxl 发了个好玩的:

有点牛子。

慢报:lyt 的内裤丢了,谁这么变态偷别人内裤?(upd:找着了,在他行李箱里

放一道人类基础脑力检测题:

用四种颜色去染五个点,要求任意线段两个端点颜色不能相同,求方案数。


推歌:Limited Dimension -EastNewSound

我草好听!


昨天模拟赛 T3(话说不放题面直接放题解不算侵权吧)

场上想到了一下最多下降 \(\sqrt{2n}\) 次但是立马用 \([1,2,1,2\cdots]\) 这种序列把自己给否了。

显然的 dp 是设 \(f_{i, j}\) 为和为 \(i\),最后一个数为 \(j\) 的价值和。\(f_{i, j}=f_{i-j,j-1}+w\times f_{i-j,j+1}\)。是 \(O(n^2)\) 的,注意到当第一个数大于 \(\sqrt{2n}\)(以下称 \(B\) 且认为 \(\frac{n}{B}\)\(B\) 相同)的时候序列长度不会超过 \(B\)

因此可以考虑只 dp 高度小于 \(B\) 的值。而对于 \(dp_{1\sim n, B-1}\) 则需要 \(dp_{1\sim n, B}\) 来帮助 dp。

同时 \(ans=\sum_{i=1}^n dp_{n,i}\),因此还需要求出 \(dp_{n, B\sim n}\)

由于第一个数高度大于等于 \(B\) 序列长度不会超过 \(B\),并且就算数列全部都是每次减一的,最终也不会小于 \(0\),因此可以直接看差分数组。

这时数列为 \(a_1, a_1+d_1, a_1+d_1+d_2\cdots\),写成和就是 \(a_1\times len+\sum\limits_{i=1}^{len-1}d_i\times (len-i)\),稍微 reverse 一下差分数组就是 \(a_1\times len+\sum\limits_{i=1}^{len-1}d_i\times i\)

这时当面积为 \(S\),时,可以得到 \(\sum\limits_{i=1}^{len-1}d_i\times i=S-a_1\times len\)。直接对前面那一堆东西和 \(len\) 进行一个 dp 即可。

具体就是设 \(f_{i, j}\)\(len=i\),前面那堆为 \(j\) 的权值和,转移比较简单。

有了 \(f\) 就可以快速求出单点 \(dp\) 值了。比如要求 \(dp_{i, j}\),那么可以让 \(a_{len}=i, S=j\),只需要枚举 \(len\) 然后对 \(f\) 求和即可。

时间复杂度 \(O(n\sqrt n)\)