菜鸡多校训练及补题记录,随缘更

牛客多校

contest 1

可做题 \(A\), \(C\), \(D\), \(G\), \(H\), \(I\), \(J\)

已做 \(A\), \(D\), \(G\), \(I\), \(J\)

\(A\):区间合并模板

\(C\)

\(D\):平几推导

\(G\):签到

\(H\)

\(I\):概率dp 令 \(f_{i, j}\) 为 还剩余i张牌且还差几张牌凑成一对
状态转移过程为 1

\(J\):启发式合并。

考虑通过“x确定y”这种关系将x和y进行合并,因为如果确定了x就能确定y,那么贪心地想肯定是确定x能得到更大的答案,那么就没有必要再去考虑从y出发了,所有从y连出去的边改成从x连出去。

当“x to y”这条边被合并之后,原本由y指向的点就变成了由x指向,在不断合并的过程中,如果从x出发最终能在t汇聚,那么最后一定会使得t仅由x指向(因为会合并出很多个“x to t”的边,如果维护集合的话就可以自动去重),即出现了“x决定t”,这个时候就需要继续合并。

合并的总次数显然是 \(O(n)\) 的,由于合并的是两个点连出去的点的集合,所以考虑启发式合并,复杂度约为 \(O(n\log^2n+k\log ⁡n)\)

contest 2

待更。。。

contest 3

待更。。。

杭电多校

contest 1

可做题 \(A\), \(B\), \(C\), \(D\), \(I\), \(K\), \(L\)

已做 \(C\), \(D\), \(K\), \(L\)

\(A\)

\(B\):范围较小,暴力

\(C\)\(bitset\) 优化01背包,考虑 \(dp_{i, j, k}\) 为前i件物品,异或值为j,已用背包容量为k 有状态转移方程
$f_{i, j, k} = f_{i, j, k} \text{or} f_{i - 1, j \oplus w_i ,k - v_i} $
因此可以对k进行优化,同时滚掉第一维度。变成 \(f_j |= f_{j \oplus w_i} << w_i\)

\(D\):从小到大枚举每一个边,找到所有符合条件的最小边,采用bitset优化

\(I\): 大概率模拟题(雾

\(K\): 期望题 期望1的个数减去期望删去1的个数 即 \((n - m)/2\)

\(L\): 两个 n 可以转换成一个 n - 1 从后往前判断是否可以出现0

contest 2

可做题 \(A\), \(B\), \(C\), \(G\), \(I\), \(K\), \(L\)

已做 \(B\), \(C\), \(G\), \(I\), \(K\), \(L\)

\(A\):

\(B\): 剔除除了括号和数字以外的字符。

\(C\): 从后往前反序操作。使用bitset记录当前这项是否记录。
两种操作,第一种是复制序列,反向操作为将复制所得的序列与原序列异或,并将后面的序列向前位移。第二种操作将当前位置的值取反即可,因为最终答案是要将所有的数异或起来,考虑相同的数只会最多出现一次。只需修改当前的数的状态即可。

\(G\): 阅读理解。对区间票排序后,依次判断当前区间是否与之前的区间重叠,若不重叠,则前一个区间有效,否则跳出循环。如果前 \(n - 1\) 个区间均有效,则最后一个有效,答案加一。

\(I\): 简单数论模拟题

\(K\): 建立一棵线段树,维护如下内容:

  • 区间最大值
  • 区间次大值
  • 区间最小值
  • 区间次小值
  • 选了一对的最大值
  • 选了两对的最大值
  • (一对的值 + 剩下的最大值)的最大值
  • (一对的值 − 剩下的最小值)的最大值

\(L\): 小范围dp,大范围贪心的选择365。

contest 3

可做题 \(B\), \(C\), \(I\), \(K\), \(L\)

已做

\(B\):

\(C\):

\(I\):

\(K\):

\(L\):

contest 4

可做题 \(A\), \(B\), \(C\), \(D\), \(F\), \(G\), \(K\)

已做 \(A\), \(B\), \(C\), \(D\), \(F\), \(K\)

\(A\): 区间 dp 需要维护两个数组 \(f_{i, j}\) 表示i, j 相等时,[i, j] 区间有多少合法括号,\(g_{i, j}\) 表示区间内有多少合法括号。显然答案为 \(g_{1, n}\)
其中 \(g_{i, j} = \sum g_{i, k - 1} * f_{k, j}\)

\(B\): 图论混合题,简而言之,先对有向图跑第一个维度的 \(dijkstra\) 求出最短路,并寻找到所有位于最短路上的点构成最短路图。考虑到第一个权值可能为0,因而会存在环,需要 \(tarjan\) 缩点,构成 \(DAG\) 。然后使用拓扑序针对第二个维度求出最长路。答案即为最短路和最长路。
注意的几个细节,需要将应该初始化的初始化。同时,缩点后需要按照对应的序号操作。

\(C\): 差分约束。假设 \(a_i\) 为前 \(i\) 个共有多少魔法成分。则满足如下条件

\[\begin{cases} a_{\min\{n, i + k - 1\}} \geq a_{\max\{0, i - k\}} + p_i (保证第一个条件:第i个魔法塔至少需要p_i点的魔法值) \\ a_i \geq a_{i - 1} + 0 (保证每个数非负)\\ a_{l - 1} \geq a_r - b (保证给定区间的总数不大于b) \end{cases} \]

因为我们最终答案求的是最小值,因此我们要转化为最长路的形式。 即 \(dist_j \geq dist_t + w (从t向j连一条长度为w的边)\)

\(D\): 易证得。

\(F\): 阅读理解题。

\(K\): 线性基模板题。易证得可以选择任意若干个数,保证这些数的异或值最大即可。

posted @ 2022-07-20 23:24  circletime  阅读(68)  评论(0)    收藏  举报