• THUSC2022 / PKUSC2022 做题记录


    暂时咕了,一定会更完的!

    THUSC2022 T1

    签到。

    直接倒着 dp,令 \(f_{i,j}\) 表示在位置 \(i\),走了 \(j\) 分钟且还没下大雨,到终点淋的最少雨数,转移一步直接分讨会不会下大雨,随便拆式子算算就好了。(显然下大雨之后会走二类权值到终点的最短路)

    THUSC2022 T2

    好像是简单题,可惜我不会。

    \(f(l,r)\) 为使用区间 \([l,r]\) 替换后的最大权值,那么可以证明 \(l\) 关于 \(r\) 的最优决策具有单调性。

    然后就决策单调性分治,每次在值域线段树内二分计算权值即可,指针暴力移动是 \(O(n\log n)\) 的。

    复杂度 \(O(n\log^2 n)\)

    THUSC2022 T3

    \(X\) 为根搜一个 bfs 树,那么横叉边只会连接相邻层。

    令深度小于等于 \(S\) 的为“好”点,我们给边定向时令好点之间深度深向深度浅连边,坏点向好点连边,坏点之间的连边让左部连向右部。

    我们随机抽查 \(O(\frac{n}{S})\) 个点,称一个点是“可接受的”当且仅当它既有入度又有出度,可以发现从“可接受的”点出发,只需要沿着出边走 \(O(S)\) 步即可到达 \(X\) 点。

    而可以发现,除非全树深度小于等于 \(S\) 且叶子数量巨大,“可接受的”点数量总是 \(O(S)\) 级别的,而抽查 \(O(\frac{n}{S})\) 个点可以期望抽到 \(O(1)\) 个可接受的点。

    而上面那种 Corner Case 可以在抽查完点之后任选一个点走 \(O(S)\) 步,显然可以到达 \(X\)

    平衡一下即可做到 \(O(\sqrt n)\) 的询问次数。

    THUSC2022 T4

    还不太会单 \(\log\)

    \(\log\) 做法就是重链剖分,重链上的每个哈希值维护一个动态开点线段树,查询的时候链之间暴力 KMP 即可。

    PKUSC2022 D1T1

    首先考察单个变量的随机过程。

    我们发现这个随机过程由很多个形如这样的过程拼接而成:

    \(i\) 出发,跳了若干步,中途始终没有越过 \(i\),最后一步到了 \(i+k\)

    \(f_{i,k}\) 表示这个事件的期望步数,枚举其跳的第一步,可以发现变成了这样的过程:

    \(i\) 出发,跳了若干步,中途始终没有越过 \(i+j\),最后一步到了 \(i+k\)

    \(g_{i,j,k}\) 表示这个事件的期望步数,容易列出 \(f,g\) 的递推。

    \(g\) 全部用 \(f\) 表示,可以在 \(O(nm^3)\) 解出所有 \(f\)

    而两个变量可以直接 dp,令 \(h_{i,j}\) 为第一个为 \(i\),第二个为 \(i-j\) 的答案,然后随便转移一下就好了。

    复杂度 \(O(nm^3)\)

    PKUSC2022 D1T2

    PKUSC2022 D1T3

    PKUSC2022 D2T1

    为什么,大家,都切了。。。

    两种做法。

    枚举 \(f(x_i)=g(y_i)=w_i\)\(w\) 集合,可以发现本质不同的贡献只有 \(O(p(n))\) 种。

    此时 \(f,g\) 两个函数就是独立的了,只需计算 \(\forall_{i} f(x_i)=w_i\) 的概率即可,列出式子:(令枚举的拆分数是 \(t_1,t_2,\cdots,t_k\)

    \[[x^m]\prod_{i=1}^k(\sum_{j=1}^m\frac{x^jj^{t_i}}{j!})=[x^m]\prod_{i=1}^k(\sum_{j=1}^m\frac{x^j}{j!}\sum_{p=0}^{t_i}\begin{Bmatrix}t_i\\p\end{Bmatrix}j^{\underline p})\\=[x^m]\prod_{i=1}^k(\sum_{p=0}^{t_i}\begin{Bmatrix}t_i\\p\end{Bmatrix}\sum_{j=1}^m\frac{x^j}{(j-p)!})=[x^m]\prod_{i=1}^k(\sum_{p=0}^{t_i}\begin{Bmatrix}t_i\\p\end{Bmatrix}x^pe^x)\\=e^{kx}\prod_{i=1}^k(\sum_{p=0}^{t_i}\begin{Bmatrix}t_i\\p\end{Bmatrix}x^p) \]

    暴力卷积即可,复杂度 \(O(p(n)n^2)\)

    实际上这道题可以做到 \(O(n^6)\)。(标算做法)

    构建一个左右均 \(n\) 个点的二分图(左右各代表 \(f,g\) 的输出),若 \(i\)\(j\) 连边则表示有约束 \(f(i)=g(j)\),一个连通块里的数必须相同。

    枚举这个二分图的边数 \(e\)(叠合重边)以及连通块数量 \(c\),我们可以答案的式子:

    \[\sum_{e=1}^n\sum_{c=1}^{2m}\begin{Bmatrix}n\\e\end{Bmatrix}e!f(m,e,c)m^{c-2m} \]

    其中 \(f(m,e,c)\) 表示左右各 \(m\) 个点,\(e\) 条边,\(c\) 个连通块的二分图数量。

    暂时咕了,之后再更。

    PKUSC2022 D2T2

    好像比较简单,竟然还是不会。

    给每个颜色的边随机权值使得同颜色权值异或和为 \(0\),于是一条路径合法可以看作路径权值异或和为 \(0\)

    做一遍树上前缀和,合法路径就是前缀和 \(v\) 相等的点之间的路径。

    那么我们需要解决的问题就是点集直径,以及点集不过某个点的直径。

    首先求出点集某一条直径,如果查询点不在这个点集上答案就是直径;否则我们以 \(s,t\) 为根各 dfs 一遍,求出每个子树的点集直径就可以得到删掉直径上点的答案了。

    由于有很多个颜色,用一个虚树做一做,计算答案的时候再离线排序再树上并查集就好了。

    复杂度 \(O(n\log n)\)

    PKUSC2022 D2T3

  • 相关阅读:
    day 23 索引
    day 22 全量更新
    day 21 求贫困户
    day20 函数,同比,和基础
    知识点记录
    day 20试题
    day 16面试题
    day 13拉链数据做存储
    day 13 拉链数据批量处理
    一维,二维,三维数组,vector 初始化
  • 原文地址:https://www.cnblogs.com/xiaoziyao/p/16315161.html
Copyright © 2020-2023  润新知