Loading

VP 记录

一些拉跨的 VP 记录。

一些标记:

  • \(\color{green}{\bigstar}\) 表示赛时做出来的题;
  • \(\color{orange}{\circlearrowleft}\) 表示赛时有想法但是没通过的题;
  • \(\color{blue}{\Delta}\) 表示已补的题
  • \(\color{red}{\circledS}\) 表示赛时完全没有思路/没有时间看的题。

ARC 113

\(\color{green}{\bigstar}\)A:给你一个 \(K\),求有多少三元组 \((A,B,C)\) 使得 \(ABC\le K\)

直接枚举是对的。

\(\color{green}{\bigstar}\)B:给你 \(A,B,C\),求 \(A^{B^C}\) 的个位数。

首先可以把 \(A\)\(10\),但是你发现这个 \(10\) 它不是质数,也不一定互质什么的。哦但是这样我们只要知道指数的模数是多少就可以了。然后 \(A\) 不超过 \(9\),打表求循环节:
0:1|1:1|2:2486|3:3971|4:46|5:5|6:6|7:7931|8:8426|9:91
记得判断指数结果为 \(0\) 的情况。

\(\color{green}{\bigstar}\)C:给你一个字符串,求最多操作多少次。一次操作能把相邻三个字符,如果前两个相同而与第三个不同,则把第三个改成与前两个相同。

直接从后往前做,就是如果扫到连续多个字符相同,那就算出它的贡献,再记录上一次是什么字符,否则无法覆盖之前的。还要记录中间不同的那一段扫过来每个字符出现的次数。

\(\color{green}{\bigstar}\)D:给你一个 \(N,M\) 以及 \(K\)。然后在一张 \(N\times M\) 的网格图里填上 \([1,K]\) 内的数字,令 \(A_i\) 为第 \(i\) 行的最小值,\(B_j\) 为第 \(j\) 列的最大值。现在要求有多少不同的 \((A,B)\)

就是 \(A\) 的最大值一定要小于等于 \(B\) 的最小值。否则,\(A\) 中的最大值一定会出现在 \(B\) 中,就不合法了。除此以外,我们一定能够构造方案。注意特判一行或者一列的情况。
然后就是,你只要做这样一个问题:给定值域 \(K\),求有多少序列对 \((A,B)\),满足 \(A\) 的最大值小于等于 \(B\) 的最小值。挺经典的计数问题。我们令 \(a_i\) 表示长度为 \(N\) 的序列值域为 \(i\) 的序列总数(\(i\) 必选),这个东西可以直接差分得到,就是你减去 \(a_{i-1}\) 就行了。

\(\color{red}{\circledS}\)E:\(T\) 组数据,每组给你一个由 ab 构成的字符串,要求操作若干次后得到的字符串字典序最大。每次操作可以选择两个相同的字符,然后把中间的字符翻转,然后删去这两个字符。

\(\color{red}{\circledS}\)F:给你一个 \(X_{0\sim n}\),现在你在实数轴上有 \(n\) 个人,第 \(i\) 个人的位置在 \(X_{i-1}\sim X_i\) 间随机。

ARC125

\(\color{green}{\bigstar}\)A:给你一个序列 \(a\),一次操作可以使它前后循环移动,或者将第一个元素放入 \(b\) 的末尾,求最少多少次可以使得 \(b=T\)

由于串只由 01 构成,所以如果 \(T\) 由 01 构成,那么贪心地想肯定是先移动到一个 01 相邻的位置,然后不停地反复横跳。在此之前 01 也可以放入 \(b\) 的末尾。此前注意很多很多特判全 0 或者全 1。

\(\color{green}{\bigstar}\)B:给你一个 \(N\),求有多少个数对 \((x,y)\) 满足 \(x^2-y\) 是平方数。要求 \(1\le x,y\le N\)

首先假设这个平方数是 \(a^2\),那么通过移项可以得到:\((x-a)(x+a)=y\)。那么我们令 \(u=x-a,v=x+a\),就会得到如下限制:

\[\begin{cases} u\le v\\ 1\le uv\le N\\ 2\le u+v\le 2N\\ u\equiv v\pmod 2 \end{cases} \]

依照这些限制,枚举的 \(u\) 只需要到 \(\sqrt{N}\) 就行了,然后对于一个 \(u\),可以直接算出合法的 \(v\) 的取值个数。

\(\color{blue}{\Delta}\)C:给你一个序列 \(A\),求 \(N\) 的所有排列中,以 \(A\) 为最长上升子序列的字典序最小的那个。

采用归纳法。首先考虑边界:如果 \(K=1\),则唯一的方案就是倒序排列。

然后对于 \(A_1\) 进行分类:

  1. \(A_1=1\),那么我们在构造的时候 \(P_1=1\) 必然成立。这很显然。那么问题就缩小规模到 \(K-1\) 长度的 \(A=\{A_2-1,A_3-1,\cdots,A_K-1\}\),求它的答案,然后每一项再加回 \(1\) 就是最终的结果。
  2. \(A_1>1\),那么再构造的时候 \(P_1=A_1\) 必然成立。此时,必然有 \(P_2=1\),因为这样构造一定有解并且字典序最小。我们接下来考虑这个解。这样一来,相当于在后面问题缩小到 \(K-1\) 长度的 \(P\)\(\{2,3,\cdots,A_1-1,A_1+1,\cdots,N\}\) 的排列,并且要满足 \({A_2,A_3,\cdots,A_K}\) 是它的 LIS。

直接递归求解即可。

posted @ 2022-07-26 19:32  ZCETHAN  阅读(56)  评论(0编辑  收藏  举报