ARC
man!
找连续的 \(ABABAB...\) 子段,然后乘法原理算一下。
构造题,猜结论。
考虑将原排列 \(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\) 时:
\(j=a_i\) 时:
其中 \(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)\)。
题面读仔细,很抽象。
\(M\le 10\),考虑状压。
定义 \(f_{i,s}\) 表示前 \(i\) 位选完了,下一位可以选 \(\{s\}\)。
可以发现这玩意儿是没有后效性的,能转移。
复杂度 \(O(nm2^m)\)。
交互题。
容易发现,每次选最大的和最小的,是符合要求的。
用 deque 维护。
考虑先排序,询问 \(n\log n\) 次。
删除队首和队尾,在合适的位置插入新的值(deque 支持二分,也可以 \(O(1)\) 在中间插入一个值!),询问 \(n\log n\) 次。
总询问数为 \(2\cdot n\log n\),符合要求。
复杂度 \(O(n\log n)\)。
贪心,凭感觉写就行。
复杂度 \(O(n)\)。
先从位数入手,然后模拟,达芬题。
复杂度 \(O(1)\)。
容易发现顺序无所谓,所以从小到大排序,计算每个 \(a_i\) 对后面的贡献。
然后发现是个完全分组背包,最小化物品选择总数,复杂度 \(O(n\sqrt n)\)。
刚开始打算直接套传纸条公式,但发现可以随便走。
然后然发现红色和蓝色互不影响,跑两边最短路就行了。
复杂度 \(O(n^2\log n)\)。
\(400\) 分的尤物,写了 n 种贪心都没过。
可以先考虑如何在空面板上构造一种 简单 的东西,然后再考虑在正式情况下试着调整调整,发现可以。
复杂度 \(O(n)\)。
尤物 2 号。
手搓一下找规律,分类讨论。
复杂度 \(O(1)\)。
题目看起来很唬人,但仔细观察发现,一共就两种取法。所以要先观察()
复杂度 \(O(n)\)。
喜闻乐见的括号题。
贪心,然后注意细节。
复杂度 \(O(n)\)。
最开始想的和正解差不多,但实现上非常不优美,导致越写越乱,最后看题解,发现其实可以写的很简单,思考过程不写了(应该挺自然的)。
复杂度 \(O(n)\)。
最大子段和。
复杂度 \(O(n)\)。
平均数的性质。
复杂度 \(O(1)\)。
期望题。
容易发现只考虑先手就行了。
定义 \(f_i,g_i\) 表示选了 \(i\) 个数,最后一次是先手/后手选的,把剩下的选完的先手期望代价。
定义 \(p=\frac{i}{n}\)。
转移方程为:
解方程转移即可。
复杂度 \(O(n)\)。
打表找规律,没啥可说的。
复杂度 \(O(n)\)。