CFR-755-Div.2解题报告

比赛传送门

赛时AC三道,补题做出一道。

A. Mathematical Addition

Problem

给你两个正整数 u,vu,v,求一对合法的 x,yx,y 使得 xu+yv=x+yu+v\frac{x}{u}+\frac{y}{v}=\frac{x+y}{u+v}

解方程。

vx+uyuv=x+yu+v(vx+uy)(u+v)=uv(x+y)uvx+u2y+v2x+uvy=uvx+uvyu2y+v2x=0\begin{array}{c} \frac{vx+uy}{uv}=\frac{x+y}{u+v} \\ (vx+uy)(u+v)=uv(x+y) \\ uvx+u^2y+v^2x+uvy=uvx+uvy \\ u^2y+v^2x=0 \end{array}

则显然一组合法解为 {x=u2y=v2\begin{cases}x=-u^2\\y=v^2\end{cases}

B. Coloring Rectangles

Problem

有一个 n×mn\times m 的矩阵,每个方格均为红色。你可以任意多次的横切或纵切(必须贯穿整块),不能出现 1×11\times 1 的矩阵,问切完后最少需要涂几个蓝色格子才能使得红色格子不相邻。

example: 2×52\times 5

容易发现,把格子割成 1×31\times 3 是最优的,于是考虑在不对后续操作产生影响的前提下,把它切成这样:

然后再切成这样:

最后特判剩下的。注意切的时候要时刻堤防剩下一行或剩下一列的情况,防止出现 1×11\times 1

通过找规律,我们可以发现,答案为 n×m3\lceil\frac{n\times m}{3}\rceil

C. Two Arrays

Problem

给你两个数组 a,ba,b,问能否通过把 aa 进行一次变换得到 bb

变换方式:在 aa 数组中选出若干个数分别 +1+1,然后随意排列顺序。

大水题。a,ba,b 分别排序,看是否每个 aa 数组的元素都等于 bb 的对应元素或等于 bb 的对应元素 +1+1

D. Guess the Permutation

Problem

这是一道交互题。

有一个初始数组 aa,满足 ai=ia_i=i,即 1,2,3...{1,2,3...}。现在有 1<=i<j<=k<=n1<=i<j<=k<=n,将 [i,j1],[j,k][i,j-1],[j,k] 分别翻转。你需要通过不超过 4040 次询问得到 i,j,ki,j,k 的值。

每一次询问你可以给出 l,rl,r,得到 [l,r][l,r] 中的逆序对个数。

n109(log2(109)30)n\le 10^9(\log_2(10^9)\approx 30)

  1. 用一次 log\log 找到 kk:二分 midmid,询问 [mid,r][mid,r] 中逆序对个数,如果不为 00,则 kk[mid+1,r][mid+1,r] 中,否则在 [l,mid][l,mid] 中。
  2. 用两次询问 [1,k][1,k][1,k1][1,k-1] 来获得 jj 的位置:一段降序区间 [l,r][l,r] 的逆序对数减去 [l,r1][l,r-1] 的逆序对数等于 len1len-1,于是 [1,k][1,k1]=len[j,k]1[1,k]-[1,k-1]=len_{[j,k]}-1jj 前面的都被抵消了),用 k(len1)k-(len-1) 即可求出 jj
  3. 同理用两次询问 [1,j1][1,j-1][1,j2][1,j-2] 来获得 ii 的位置。

询问次数约为 log(n)+4\log(n)+4

不开 long long 见祖宗(逆序对个数最多有 n2n^2 级别)。