「Log」2023.8.11 小记
序幕
从今天开始记小记。
七点到校了,先小摆一会,然后整理博客。
听 MiTiS 的电音,开始写题。
\(\color{blueviolet}{P1829\ [国家集训队]\ Crash的数字表格\ /\ JZPTAB}\)
莫反练习题,式子并不难推,两个整除分块解决。
八点整打完,开始调。
忘记初始化了。
筛质数 pri[++pcnt]=true;
,不知道自己在写什么。
没给 \(\mu(1)\) 赋值,忘写 ==0
,等差数列求和忘除以 \(2\),不知道自己在些什么。
不小心又炸 int 了,讨厌取模。
总计浪费 \(20mins\) 调弱智错误。
间幕 \(1\)
开始学杜教筛,没学完,开始听课。
图论会不了一点。
不会图论,不会图论,不会图论,不会图论,不会图论,不会图论,不会图论,不会图论。
学长请我们喝水。
复习了点双边双,点完外卖开始做题。
外卖到了,正好敲完一遍割点板子,发现以前写的板子有冗余部分。
打完一道题调不出来,开摆,学习打块。
午休结束,开调。
\(\color{royalblue}{P3469\ [POI2008]\ BLO-Blockade}\)
考虑分类讨论:
- 若节点 \(i\) 不是割点,则 \(ans_i=2(n-1)\)。
- 若节点 \(i\) 是割点,则用组合数计算贡献即可。
具体地,因为点对有向,所以对于每一联通块计算以其为起点的点对。
代码里计算割点答案时把所有子节点全算上了,错误的,应该记录子节点 \(low\) 比当前节点 \(dfn\) 大的贡献。
细微重构,开 long long,A 掉。
间幕 \(2\)
不会图论,不会图论,不会图论,不会图论,不会图论,不会图论,不会图论,不会图论,不会图论,不会图论。
接着听课,全是 CF 题,会不了一点。
决定不点晚饭,因为剩的午饭够吃了。
接着写题。
\(\color{blueviolet}{P4923\ [MtOI2018]\ gcd?人生赢家!}\)
设 \(f_{st,i,j}\) 表示当前宝物获取状态为 \(st\),站在第 \(i\) 个宝物位置,用了 \(j\) 次传送。
考虑预处理宝物之间的距离,注意初值设置即可。
要保证当前点无前置宝物才可以直接设 \(j=0\) 的初值,若 \(k>0\) 则也可以设 \(j=1\) 的初值。
具体地,转移时枚举可合法转移到当前位置的宝物进行转移,其中保证当前宝物前置、枚举转移位置前置都包含在状态中,特殊判断用传送转移的情况。
最开始做的时候没看到宝物的前置宝物,读入时才发现,微小重构改掉。
一堆细节处理问题,改掉。
样例过了,\(20pts\),为什么呢?
开始阅读代码,发现数组开小了,浪费 \(30mins\)。服了。
为什么空间只有 \(19.53MB\)?为什么空间只有 \(19.53MB\)?为什么空间只有 \(19.53MB\)?
但凡空间大点我就一遍过了(指过样例之后)。
\(\color{blueviolet}{P4645\ [COCI2006-2007\#3]\ BICIKLI}\)
考虑 Tarjan 缩点先,判断起点终点之间是否有环,将无限的状态打上标记,随着拓扑排序转移。
具体地,若一个强联通分量的 \(siz>=2\)(除非 \(siz=2\) 而且包含起点终点),则将其打上标记。拓扑排序时不需要考虑无关强联通分量(类似孤点的)。
写强联通分量时建了双向边,不知道我在写什么。
特判一下孤立强联通分量就过了。
尾声
效率好低,最近有点浮躁,找一天好好睡觉罢。