CFR-755-Div-2解题报告

比赛传送门

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

A. Mathematical Addition

{% note info no-icon Problem %}
给你两个正整数 u,v,求一对合法的 x,y 使得 xu+yv=x+yu+v

解方程。

vx+uyuv=x+yu+v(vx+uy)(u+v)=uv(x+y)uvx+u2y+v2x+uvy=uvx+uvyu2y+v2x=0

则显然一组合法解为 {x=u2y=v2

B. Coloring Rectangles

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

example: 2×5

{% endnote %}

{% tabs Solution %}

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

然后再切成这样:

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

通过找规律,我们可以发现,答案为 n×m3

{% endtabs %}

C. Two Arrays

{% note info no-icon Problem %}

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

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

{% endnote %}

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

D. Guess the Permutation

{% note info no-icon Problem %}

这是一道交互题。

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

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

n109(log2(109)30)

{% endnote %}

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

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

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

posted @   曹轩鸣  阅读(18)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起