Atcoder Regular Contest 124 (vp)比赛记录

Atcoder Regular Contest 124 (vp)比赛记录

通过情况

赛时:A

赛后:BCD

(好菜啊,赛时只会做一个题,咋回事啊)

题解

A

傻逼题,略

B

我们显然可以 \(O(n\log n)\) 的 check 一个数

然后就 \(O(n^2)\) 枚举一对 \(a_i,b_j\),check一下 \(a_i\oplus b_j\) 行不行,得到 \(O(n^3\log n)\) 做法

与NOI不同的是,这玩意没部分分,必须更快

一个事实是,对于一组满的匹配,\(a_1\) 肯定有一个匹配(废话)

然后我们枚举 \(a_1\) 匹配了哪个,check一下,变成 \(O(n^2\log n)\) 就行了

C

注意到,最后剩下来的两个 \(\gcd\) 情况数不会很多。我们可以从直觉上感觉到这个 \(\gcd\) 非常的少。

注意到红色和蓝色并没有区别。考虑这样转换,我们就随便分两堆,最后 \(a_1\)\(b_1\) 肯定不在一个堆,令 \(a_1\) 那个堆是“红”,\(b_1\) 那个堆是“蓝”,就行了。容易发现这样肯定不重不漏,确实是等价的。

然后红色堆的 \(\gcd\) 一定是 \(a_1\) 的因数,蓝色堆的 \(\gcd\) 一定是 \(b\) 的因数。打开 factors.jpg,发现这两个东西都 \(\le 1344\),暴力枚举

又注意到 \(n\le 50\),容易想到,这样枚举一波之后,\(O(n)\) 的 check 一遍,看看行不行

复杂度 \(O(\sigma_0(a_1)\sigma_0(b_1)n)\)

D

套路的,把置换分解成环

设序列的前 \(n\) 个为 \(A\) 部分,后 \(m\) 个为 \(B\) 部分。

一条环上,会有若干条边。如果一条边连接的两个点在一个部分,那这个边上的点就不能交换,这边就无效了。给它打一个叉叉,记作 \(X\) 边(形 象 生 动)。如果两个点同属 \(A\) 部分,记作 \(X_A\) 边;同理有 \(X_B\)

对于一条跨过 \(A,B\) 两部分的边,给它打一个√,记作 \(V\) 边 (形 象 生 动)

如果一个环全是 \(V\) 边,显然它就是一个随便换的环,有一个经典结论,可以 \(V-1\) 步把它交换到位 (到位:即 \(i\) 位置上的值是 \(i\) ,也就是目标状态)

如果一个环里有 \(s\) 个点,并包含至少一个 \(V\) 边(那就一定会有两个),容易手玩出,也容易证明出,这个环也可以 \(V-1\) 步到位。

反过来,如果一个环里都是 \(X\) 边,似乎不太好做。假设这个环里有 \(s\) 个点。

我们肯定不能考虑在环内动手脚了,毕竟一条边都不能动。容易想到,从另一个部分里面“借”一个东西来,交换一圈,再“还”回去。容易手玩出,这样最少 \(s+1\) 步,就可以让这个环里都归位,且这个“借”来的东西还在原位不变。

一个例子:

\(n=3,m=1\)\(p=\{2,3,1,4\}\)

 (符号|分割A,B两部分)
(step) : (p)
0: 2 3 1 | 4
1: 2 3 4 | 1
2: 1 3 4 | 2
3: 1 2 4 | 3
4: 1 2 3 | 4

用了4步, 把序列变成了 \(\{1,2,3,4\}\),左边全部归位,借来的 “4” 位置不变

称:有至少一个 \(V\) 边的环为 \(V\) 环,全是 \(X\) 边的环为 \(X\) 环。

那我们的一种方案就是,\(\sum\limits_{c\in V} (|c|-1)+\sum\limits_{c\in X} (|c|+1)\)

这里的 \(V,X\) 表示 \(V\) 环集合,\(X\) 环集合,\(c\) 是一个环,\(|c|\) 表示这个环里有多少个点

这个式子可以化一下,把所有的 \(|c|\)\(1\) 分开。所有的 \(|c|\) 加一块就是 \(n+m\),这些 \(1,-1\) 加起来就是数量。所以这个式子就是 \(n+m+|X|-|V|\)

这样一定优吗?

注意到,对于一个 \(X_A\) 环和一个 \(X_B\) 环,我们可以交换它俩的一个元素,使它俩合并为一个 \(V\) 环。合并成 \(V\) 环之后,似乎能快两步,抵消了合并这一步,并且更优

现在设 \(A\) 表示 \(X_A\) 环的数量,\(B\) 表示 \(X_B\) 环的数量,\(C\) 表示 \(V\) 环的数量。我们的策略是:

  1. 花费 \(min(A,B)\) 步,合并。合并时,两个 \(X\) 环变成了一个 \(V\)

    于是剩下 \(max(A,B)-min(A,B)\)\(X\) 环,以及 \(min(A,B)+C\)\(V\)

  2. 接下来就是,\(X\) 环花费环长+1步,\(V\) 环花费环长-1步。

考虑这样的总代价:

\[min(A,B)+n+m+(max(A,B)-min(A,B))-(min(A,B)+C)\\ =n+m+max(A,B)-min(A,B)-C \]

\(S\) 表示环的总数 \(=A+B+C\)。式子又可以化成,\(n+m-S+2*max(A,B)\)。这就是题解里的式子了。

然后就算一波就行了

耗耗反思

这次比赛,不讲武德,来,骗,来偷袭,我这个小垃圾

我劝,这个垃圾zps,耗子尾汁,耗耗反思

赛场实况

赛场上我很快就秒了 A 题,但是 B 题卡了快 2h。完全没有看到 C,D 两题的题面

而我做 B 题时,草稿纸上已经写下了 “枚 \(i\),枚 \(j\)\(n^3\)” 的字样,却没想到这 \(i,j\) 不用枚那么多,转而去想:是不是值不太多?一打表发现随机数据都有 \(1e5\) 级别,这个思路就直接废了

废你妈啊废再去想一会啊草

然后我就去想神秘分治,甚至是trie树上搞一些神秘操作,一个都没成型

傻逼吧,这一看就不是B题的难度啊

然后我就一直在trie树trie树,trie了俩小时,啪的一下比赛结束,时间就像被吸走了一样

我还没反应过来,比赛结束了,此时我只交了 A 题,看了 A,B 两题。C,D 两题的题面甚至是赛后看的

问题/sol

  • 时间分配不当
  • 思维不够灵活
  • 赛制不够熟悉

sol:目测多打几场,多做点题,就行了

posted @ 2021-08-03 14:33  Flandre-Zhu  阅读(65)  评论(0编辑  收藏  举报