传送门

A - Maximum Multiple

推一下式子暴力判断即可,范围不会太大。

B - Balanced Sequence

题意:
给出\(n\)个串,现在定义“好串”:

  • 空串;
  • \(A,B\)为“好串”,那么\(AB\)会“好串”;
  • \(A\)为“好串”,那么\((A)\)为“好串”。

现在可以对\(n\)个串的顺序任意排列之后拼接起来,问最长“好串”子序列的长度。

思路:

  • 对于每个串,先处理出合法括号序列记入答案,那么最后每个串都形如\("))))((("\)的形式,我们将其记为\((L,R)\),表示左括号和右括号分别有多少个。
  • 接下来考虑怎么安排顺序使得答案最优。
  • 考虑两个的情况,那么答案为\(min(L_1,R_2)\)\(min(R_1,L_2)\),这时我们按照\(min(L_1,R_2)<min(R_1,L_2)\)的顺序放置即可。
  • 为什么?
  • 注意一下当\(min(L_1,R_2)=min(R_1,L_2)\)时,我们要按照\(L\)从大到小排序,这可以让更多的\(L\)对后面产生贡献。

详见代码:

C - Triangle Partition

排序每次选左边的就行。

D - Distinct Values

题意:
构造字典序最小的序列,满足在给出的区间中数字各不重复。

思路:

  • 对于每个位置,能影响它的区间显然从左端点最远起。
  • 发现随着位置的不断增加,最远位置具有单调性。
  • 那么利用\(set\)随便搞搞就行了,\(set\)里面的就插入可以用的数,每次取最小的就行。

比赛的时候写了个权值线段树求区间\(mex\)的做法,维护所有权值最后出现的最小值就行,然后贪心选权值。还是搞复杂了= =思维还是不够灵活。

G - Chiaki Sequence Revisited

题意:
定义:
\[a_n=\left\{\begin{aligned}&1&n=1,2\\&a_{n-a_{n-1}}+a_{n-1-{a_{n-2}}}&n > 2\end{aligned}\right.\]
先求\(\sum_{i=1}^n{a_i}\)\(n\leq 10^{18}\)

思路:
懒得写啦,有博客写得很好:传送门
找规律的时候想到二进制基本规律就出来了,核心就是找到出现次数的规律就行。
代码有些细节,因为根据规律,\(1\)只会出现一次,但实际上会出现两次,所以我们将\(n\)偏移一下即可。另外注意我们找\(x\)的时候,要找\(f(x)\leq a_n\)的最大\(x\),这里有个等于是为了方便处理数据较小时的情况。
详见代码:

K - Time Zone

模拟。

01-17 21:05