飘花效果

恭喜这个蒟蒻模拟赛再次刷新下限!

连续两天的模拟赛刷新了两个角度的下限!我真是太区了!

\(8.4\)

P2194

  • 得分 \(100\),通过时间 \(10 \text{min}\)

你说得对我一开始都复制好模板了还是没拿到首 A。

这个显然 SCC 缩点,每个 SCC 内部用一个点即可,显然选点权最小的。

至于方案,统计每个 SCC 内最小值的数量,乘法原理即可。

  • 死因:题读错了(没注意到还要能回到 \(i\)),浪费了一定的时间。

P3436

  • 得分 \(0\),通过时间无。

你说得对这道除了细节都简单我没分。

注意到它没说到了公司就不能出去再回来了。

赛时有档部分分 DAG 秒了啊,用 \(f_u\) 表示 \(u\) 出发的上班方案数,转移很平凡啊,建反图 topo 一下就行啊。

然后不会做了啊。

注意到一个大小大于 \(1\) 的 SCC 内部是可以绕环的喵,路径有无数条,缩点后直接特判啊可以。

注意这题还有自环啊,自环也可以绕环无限条啊喵。

  • 死因:认为重复一条边边集只算一次,也就是绕环算一种方案;没考虑自环;需要提高读题能力和 corner 能力了。

六花的勇者

$\text{Problem}$


找不到原。

对啊就是这道题让我写到模拟赛快结束。

这个分讨直接秒了啊。

直接枚举魔神的位置显然不好做啊,考虑由汇合点计算其对每个位置的贡献。

\(\operatorname{LCA}(x ,y) = l\)

  • 对于 \(l\) 子树外,所有节点都被增加贡献 \(l\)
  • 对于 \(x / y \rightsquigarrow l\) 的路径中的每个节点 \(i\),其子树内去除含 \(x / y\) 的儿子子树(\(x / y\) 则没有),每个节点都增加 \(i\)

好了直接上重工业维护第一个。

考虑 DFN 序中子树是连续的一段,第一种操作直接在 DFN 序上差分即可。

第二种操作直接等价为子树加 \(i\) 儿子子树内含有 \(x / y\) 的减 \(i\),记 \(\Delta_i\)\(i\) 的变化量,可以发现 \(\Delta_i = \Delta_{fa} + i - fa\);对于多组询问,用树上差分记录点 \(i\) 应该加/减各 \(pl_i / del_i\) 次,那么 \(\Delta_i = \Delta_{fa} + i \times pl_i - fa \times del_i\)\(Q\) 询问后一遍 DFS 即可计算。

  • 死因:无脑重工业好像哪里假了调不出来,真的要 think twice code once 了。

CF475E

羡慕能出出这种题的出题人。

考虑特殊性质 \(m = n - 1\)(树),难以想到有一种构造方法,枚举一个根节点 \(rt\),对于其所有儿子子树内的边,一些儿子子树向上,其余的向下。

记有 \(x\) 个儿子向上,剩下 \(n - 1 - x\) 个向下,答案贡献为 \(x(n - 1 - x)\),显然 \(x\) 越接近 \(\frac{n - 1}{2}\) 越好。

这个可以直接背包,复杂度 \(\mathcal O(n^3)\),注意到我们只关注一个数是否能被加出来,是个可行性背包,用 bitset 优化到 \(\mathcal O(\frac{n^3}{w})\),这样树就结束了,不知道正确性但它是对的,感性理解就是子树一上一下必然不优。

考虑无向图,注意到边双内部的点一定能通过定向互相到达,边双缩点后就是一棵树,每个节点权值为边双内部的节点数 \(w_i\),边双内部贡献 \(\sum w_i^2\),其余 \(x(n - w_{rt})\),同样背包即可。

但是这样过不去 NFLS \(1\le n\le 10^5\) 啊,其实 TJ 区也有办法。

发现一棵普通树最优秀的根一定是两个重心的一个,注意到非重心作根一定有一个儿子子树大小超过 \(\frac{n}{2}\),它一定单个作向上/向下的子树,这样可以只对至多 \(2\) 个点 DP,但是复杂度还是 \(\mathcal O(n^2)\) 起步。

不容易证明重心一定不劣,只对它们 DP 即可,边双就是带权重心,复杂度 \(\mathcal O(\frac{n^2}{w})\)

  • 死因:压根没怎么想,构造肯定想不到。

upd:啊哈怎么还有类似题

分数 \(100 + 0 + 10 + 0 = 110\),我刷新了暑期模拟赛得分下限!!!

\(8.5\)

UOJ136

注意到下、右、Fn 一定不劣,注意到这点就做完了。

  • 死因:注意到右、下可能更劣,没错我是右、下。

JZOJ1282

$\text{Problem}$

找到原但是一个没听说过的网站,题目是 JZOJ1282。

为了让你练习对拍,特意不给大样例!

啊哈直接无脑暴力可以 \(\mathcal O(n^2m)\) 啊还跑不满,实测能过 \(n = m = 400\),但是记录数字的数组只开到 \(10^3\) 挂了 \(10\) 分。

显然可以枚举矩阵的下边界 \(i\),惊人的考虑每种数字对答案的贡献。

你会发现数字 \(x\) 的贡献只有在 \(i\) 行以前第一次出现的列 \(l_x\) 和第二次出现的列 \(r_x\) 之间 \([l_x ,r_x)\) 有贡献,做完了。

但是这是计算一种数字的贡献啊,所以每次遇到新的还要删除旧贡献,最终计算显然是以 \(i\) 行最后一次出现的 \(x\) 为基准计算。

但是这还是 WA 啊,你发现当 \(l_x\) 列出现多于 \(2\) 个列时贡献是 \(0\) 啊!前缀矩阵必然回选到这两个 \(x\),然后做完了。

  • 死因:没想到贡献法,感觉也没想到 \(l_x ,r_x\) 的实力。

P6533

nfls 数据 \(1\le n\le 10^6\)\(mod = 1e9 + 7\) 其余一样。

这个 \(c\) 咋这么小啊,显然正难则反,有个暴力 DP 就是 \(f_{i ,j}\)\(i\) 个恰好 \(j\) 个人彩色的方案数啊,转移平凡,滚动一下变成一维,复杂度 \(\mathcal O(qnc)\)

总方案显然是 \(\prod_{i = 1}^n (a_i + b_i)\)

这个蒟蒻写了 up(j ,0 ,i) 而非 up(j ,0 ,min(i ,c)) 挂了 \(30\) 啊啊啊。

好了继续啊,发现这个很可矩阵优化的样子啊,复杂度 \(\mathcal O(q\log nc^3)\),恭喜负优化了哈。

鉴定为打了一场 matrix duel 然后矩阵用傻了。

考虑直接挂节点 \(f_{u ,i}\) 为节点 \(u\) 代表区间选恰好 \(i\) 个的方案数啊,转移平凡,复杂度 \(\mathcal O(q \log n c^2)\),可过 P6533 啊,但是这个计算总方案修改要用到逆元,P6533 模数很小啊(良心出题人),把总方案也用 SGT 维护即可。

回到 nfls 这题啊,发现这个背包就是删除一个物品 \((a_p ,b_p)\) 再加入物品 \((x ,y)\),初始预处理背包然后用回退背包即可,复杂度 \(\mathcal O(Q \log V + (n + Q)c)\)\(\log V\) 是求逆元。

TJ 区也有用回退背包但是不用注意模数的方法啊。

  • 死因:矩阵用傻了,没有跳出来,回退背包不扎实。

hihocoder #1381

有一棵 \(n\) 个节点的树, 每条边都有正的边权 \(w_i\)

你要回答 \(Q\) 个询问,每次会删掉这个树中的 \(k\) 条边,这棵树被分成 \(k + 1\) 个连通块。输出每个连通块中最远点对距离的和。

这里的询问是互相独立的, 即每次都是在原树上进行操作。

\(1\le n ,\sum k \le 1\times 10^5\)\(1\le w \le 10^9\)

两棵树合并后的直径两端点,一定在两棵树直径的端点上,这个都知道。

这个啥根据 DFN 序合并直径。

不具体补了。

  • 死因:不会 \(k = 1\),DFN 序连通块合并直径完全想不到。

得分 \(70 + 60 + 20 + 30 = 180\),刷新暑期模拟赛通过题目数量下限!!!

posted @ 2026-08-05 15:15  2021zjhs005  阅读(5)  评论(0)    收藏  举报