闲话8.9

发布时间 2023-08-09 21:04:21作者: crimson000

今天上午打了一场模拟赛,垫底喽。

T1 上了写了写画了画想了一个小时想出来个做法,估计是假了,但是能拿 80pts 就够了。T2 一眼不会,还没看见数据范围给的表格,上来写了个矩阵快速幂,白挂 5 分。T3 一眼感觉不是我能做出来的,打了个逆天复杂度的做法(还挂了)再把树的部分分写了。T4 感觉不可做,跳了、

最终得分:\(80 + 10 + 35 + 0 = 125\)

喜提 rk7,被北校暴打喽???。

下午 zzz 讲题,中午没睡下午直接困死。讲完就回二中机房改题了。下午被 jimmy 叫出去总结模拟赛,同时 jimmy 让我多运动多晒太阳,属于是让我养生了?。

晚上周默买的炸鸡真香???,晚上又花了一个小时调 T3,哈哈。

发点聊天记录:

Tibrella: 
能不能发点涩图啊群主@crimson000

crimson000:
没涩图

Tibrella: 
吗的,什么垃圾群主,怎么没有涩图

Johnsonloy:
吗的,什么垃圾群主,怎么没有涩图

crimson000
吗的,什么垃圾群主,怎么没有涩图

mjsdnz:
妈的,什么垃圾色图,怎么没有群主

bingxin:
吗的,什么垃圾群主,怎么没有涩图

下面 crimson000 发了一堆珍藏图片

bingxin:
发涩图@crimson000

Johnsonloy
发涩图@crimson000

Tibrella
发涩图@crimson000

下面又是一堆图

推歌:Darling♡BAN! -あやぽんず*/あよ/lily-an

我不会模仿zun语,所以刚才一段删掉了。

总之这首歌确实很好听,而且很可爱


LOJ539

很容易想到一个状态设计 \(f[u][c][d]\) 为当前在 \(u\) 点,当前油量为 \(c\),走的路程为 \(d\) 时的最小花费。转移直接按边转移即可。

但是这样没有利用到 \(p_i\le n^2\) 这个重要条件,而且走的路程也能达到 \(10^9\) 级别,因此这个状态必然不行。我们考虑把路程和花费这两个状态交换。我们设 \(f[u][c][p]\) 为当前在 \(u\) 点,油量为 \(c\),花费为 \(p\) 时的最长路程。我们发现状态还是太多,因为你到一个点后如果加油的话油量是固定的,因此我们可以直接设 \(f[u][p]\) 为到 \(u\) 点,且在 \(u\) 点加油,花费为 \(p\) 的最长路程。

\(f\) 的转移可以直接枚举中间点 \(x\) 进行转移。因此转移方程为

\[f[u][q]=\max (f[v][q-p[i]] + w(u, v, min(c_u, C))) \]

这里 \(w(u, v, c)\) 是指从 \(u\)\(v\),且路程不超过 \(c\) 时的最长路径。我们考虑如何求出这个玩意。很显然的转移是按边直接转移,但是那样的复杂度过高,我们考虑用倍增优化。

我们再设 \(g[u, v, k]\) 为从 \(u\) 到 $v%,路程不超过 \(2^k\) 时的最长路径,转移显然,枚举中间点即可:

\[g[u, v, k] = \max (g[u, x, k-1] + g[x, v, k-1]) \]

有了 \(g\) 之后我们就能优化 \(w\) 的转移了,我们考虑把 \(c\) 二进制分解,对于每一位都枚举中间点,我们就能得到转移方程:

\[w(u, v, c) = \max (w(u, x, c - 2^k) + g[x, v, k]) \]

这样我们就能预处理出所有的 \(f\) 值。对于每个询问,由于花的钱数越多走的路程一定不降,我们就可以二分求解。

复杂度 \(O(n^4+n^3\log C + T\log n)\)


试图理解姐姐的恋恋

发下原图(by Tibrella):