2022 牛客多校第一场题解

2022 牛客多校第一场题解

队友去 ec 了,就留我一个高考刚考完降完智的 sb 去打牛客,签到就没签成功。。。

A Villages: Landlines

做个线段交即可。

B Spirit Circle Observation

现场用后缀数组,调不出来。。。就没有然后了。。。不过我觉得后缀数组可行,不过 SAM 肯定更快。。。

考虑计数的形式,是形如 \((...)x99...9999\)\((...)(x+1)00...0000\) 这种形式,我们将所有相同长度的 9 和 0 都拿出来,把它挂在 x 的位置-1 在 SAM 上的结点,虚树上 dp 即可。

注意点:

  1. 刚开始没有考虑清楚计数的形式,假了半天。。。
  2. 求 lcs 的时候把 SAM 上的 len 打成了虚树的 dep,居然过了样例。。。我 tm。。。
  3. 复制虚树的模板的时候,最后栈中元素来连边那行代码忘写了,差点没看出来。。。
  4. 两个 int 相乘一定要立刻转 long long!

C Grab the Seat!

挺妙的题。一个遮挡的点与 \((0,1)\)\((0,m)\) 能产生两条射线,这些射线相交能产生一个轮廓,接下来就是对两条射线算一遍,取个 min。具体就是从小往大枚举 y,维护最大的斜率(绝对值)。

实现细节:

  1. 不是原点射出的。。。

  2. 一定要用分数类,double 死都过不了。

D Mocha and Railgun

性质:旋转坐标系后答案不变(转化)。

和原点连起来,垂直射出去一定最大。证明可以求导:

E LTCS

挺妙的一个题。先考虑 dp,\(f_{u,v}=\text{max}(f_{u_k,v},f_{u,v_k})\)。若两点同色,则根据 LTCS 的定义,跑一遍二分图最大权值匹配。

实现细节:

  1. 两棵树,一定要分清那颗。。。我编号经常写错。。。

  2. 拿了我洛谷 mcmf 的模板,结果不知为何,调了 2h 无果,最后拿了别人的 KM。草。

F Cut

思路挺妙的,不过还在鸽。。。

G Lexicographical Maximum

\(n-1\)\(9\)\(N\) 放一起比较即可。

H Fly

考试的时候一想,这题居然比 01 背包还强!直接放弃。。。sb 一样。。。

特殊之处:\(\sum_{i=1}^n a_i\le 4\times 10^4\)

考虑二进制拆位,对于 k 个位置做逆向的 01 背包,然后逆向卷一下。

实现细节:我刚开始写成了完全背包。。。然后我觉得没必要分治 ntt,直接 n^2+卡常就过了。

I Chiitoitsu

我刚开始把期望想成了前缀有 7 个对子,成功 WA。正确的应该考虑策略,若抽到对子就把散牌丢掉,否则随便丢,这个东西只与牌有 1 张有几个有关系。

那错误的错在哪里呢?比如你有连抽了两个相同的牌并且 start hand 里还没有出现,你在抽的时候是不知道会有对子的,但是你直接把它算进去的话相当于你能预判,这是最好的期望,并不是平均期望。

J Serval and Essay

首先,两个点能到达的要么子集要么不相交。证明有很多种,我想了一种:

对于两个点 \(A,B\) 的拓扑序列,\(A={u_1,...,u_{|A|}},B={v_1,...,v_{|B|}}\),若存在 \(k\in [1,|B|]\) 使得 \(v_k\not \in A\),我们考虑最小的 \(k\),那么一定有一段前缀 \(v_1,...,v_{k-1}\)\(A\) 出现。若 \(k>1\),那么 \(v_k\) 一定在 \(A\) 中出现,矛盾。若 \(k=1\),那么 \(v_1\) 没有出现,那么两者无交集。若有交集,会有这样:

那么圆点就达不到。矛盾!

考虑随机化,证明类似快速排序。可以数学归纳法,也可以积分放缩。

实现细节:我刚开始想用 cnt[x] 表示树的大小,达不到就加一下,但是这种情况会多算:

总之还是有点细节的,比如把 deg 还原,vis 要用时间戳等等。

posted @ 2022-07-19 10:35  Owen_codeisking  阅读(205)  评论(2编辑  收藏  举报