ARC

man!

A - ABA and BAB

找连续的 \(ABABAB...\) 子段,然后乘法原理算一下。

B - Improve Inversions

构造题,猜结论。

考虑将原排列 \(A\) 转化为 \(B\),满足 \(\forall i,b_{a_i}=i\).

然后在 \(B\) 上操作,即每次选择 \((i,j)\) 满足 \(1\le i<j\le n\)\(b_i-b_j\ge k\),交换 \(b_i,b_j\)

最优操作肯定是每次只减少一个逆序对。

所以考虑如下操作:

当前 \(b_1,b_2,b_3,...,b_{x-1}\) 的逆序对数为 0,现在出现个 \(b_x\)

找到最小的 \(l\) 满足 \(b_l,b_{l+1},...,b_{x-1}\) 均能和 \(b_x\) 交换,然后依次交换 \((x-1,x),(x-2,x-1),...,(l,l+1)\)

显然每次只会让逆序对减 1。

然后就解决了。

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

C - Subsequence and Prefix Sum

有点抽象的 DP。

定义 \(f_{i,j}\) 表示考虑到第 \(i\) 个元素,选了 \(a_i\), \(a_i\) 要变为 \(a_i+j\),的不同序列数。

转移分两部分:

\(j\ne a_i\) 时:

\[f_{i,j}=\sum\limits_{k=0}^{i-1}f_{k,j-a_i} \]

\(j=a_i\) 时:

\[g_i=\sum\limits_{k=0}^{i-1}f_{k,0} \]

\[f_{i,j}+=g_w \]

其中 \(w\) 为最大的坐标,满足 \(a_w=j-a_i\)

初始化为 \(g_i=1\)

答案为 \(\sum\limits_{i=1}^{n}\sum\limits_{j=-lim}^{lim}f_{i,j}\)

复杂度 \(O(n^3lim)\)

B - Between B and B

题面读仔细,很抽象。

\(M\le 10\),考虑状压。

定义 \(f_{i,s}\) 表示前 \(i\) 位选完了,下一位可以选 \(\{s\}\)

可以发现这玩意儿是没有后效性的,能转移。

复杂度 \(O(nm2^m)\)

C - Beware of Overflow

交互题。

容易发现,每次选最大的和最小的,是符合要求的。

用 deque 维护。

考虑先排序,询问 \(n\log n\) 次。

删除队首和队尾,在合适的位置插入新的值(deque 支持二分,也可以 \(O(1)\) 在中间插入一个值!),询问 \(n\log n\) 次。

总询问数为 \(2\cdot n\log n\),符合要求。

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

A - Good Permutation 2

贪心,凭感觉写就行。

复杂度 \(O(n)\)

B - 1 + 6 = 7

先从位数入手,然后模拟,达芬题。

复杂度 \(O(1)\)

C - Sum of Abs 2

容易发现顺序无所谓,所以从小到大排序,计算每个 \(a_i\) 对后面的贡献。

然后发现是个完全分组背包,最小化物品选择总数,复杂度 \(O(n\sqrt n)\)

C - Routing

刚开始打算直接套传纸条公式,但发现可以随便走。

然后然发现红色和蓝色互不影响,跑两边最短路就行了。

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

A - 01 Matrix Again

\(400\) 分的尤物,写了 n 种贪心都没过。

可以先考虑如何在空面板上构造一种 简单 的东西,然后再考虑在正式情况下试着调整调整,发现可以。

复杂度 \(O(n)\)

B - Simple Math 4

尤物 2 号。

手搓一下找规律,分类讨论。

复杂度 \(O(1)\)

A - Spoon Taking Problem

题目看起来很唬人,但仔细观察发现,一共就两种取法。所以要先观察()

复杂度 \(O(n)\)

B - Parenthesis Arrangement

喜闻乐见的括号题。

贪心,然后注意细节。

复杂度 \(O(n)\)

C - Jumping Through Intervals

最开始想的和正解差不多,但实现上非常不优美,导致越写越乱,最后看题解,发现其实可以写的很简单,思考过程不写了(应该挺自然的)。

复杂度 \(O(n)\)

A - A Multiply

最大子段和。

复杂度 \(O(n)\)

B - Bought Review

平均数的性质。

复杂度 \(O(1)\)

C - Catastrophic Roulette

期望题。

容易发现只考虑先手就行了。

定义 \(f_i,g_i\) 表示选了 \(i\) 个数,最后一次是先手/后手选的,把剩下的选完的先手期望代价。

定义 \(p=\frac{i}{n}\)

转移方程为:

\[f_i=(1-p)\cdot g_{i+1}+p\cdot g_i \]

\[g_i=(1-p)\cdot f_{i+1}+p\cdot (f_i+1) \]

解方程转移即可。

复杂度 \(O(n)\)

D - Digit vs Square Root

打表找规律,没啥可说的。

复杂度 \(O(n)\)

posted @ 2024-07-30 10:20  HQJ2007  阅读(25)  评论(0)    收藏  举报