首页 > 其他分享 >CFR-745-Div-2解题报告

CFR-745-Div-2解题报告

时间:2023-03-01 16:02:12浏览次数:48  
标签:2n le 745 len 黑曜石 直径 CFR Div 边界

没打比赛,赛后做出3道。
这场比赛题目质量很高,非常巧妙。

A. CQXYM Count Permutations

\(Problem\)

求有多少 \(2n\) 的排列满足存在超过 \(n\) 个 \(i\) 使得 \(p_i<p_{i+1}\),答案对 \(10^9+7\) 取模。

\(\sum n\le 10^5\)

\(Solution\)

这题就非常巧妙了,当我们使劲想想不出来时,正难则反,考虑有多少 \(2n\) 的排列满足存在超过 \(n\) 个 \(i\) 使得 \(p_i>p_{i+1}\),这时候我们就会发现:这不是一样吗?没错,答案就是 \(\frac{(2n)!}{2}\)。

B. Diameter of Graph

\(Problem\)

每次给定 \(n,m,k\) 问能不能构造一个 \(n\) 个点,\(m\) 条边的简单无向图使得图的直径小于 \(k-1\)。

一张图的直径定义为最短路最长的两个点的最短路长度。

\(t\le 10^5,n,m,k\le 10^9\)

\(Solution\)

始终没有明白为什么要“小于 \(k-1\)”,直接 k-=2 后变成 \(\le k\)。

考虑这道题可以转化为构造一个 \(n\) 个点,\(m\) 条边的直径尽可能小的图。

首先判断能否连通,即 \(m<n-1\),然后判断是否必须有重边,即 \(m>\frac{n(n-1)}{2}\),如果出现这两种情况则为不合法,直接排除。而且,如果 \(k<1\),也直接排除,因为不可能存在两个点的距离 \(<1\)。

然后考虑能否构造出直径为 \(1\) 的图。我们发现只有完全图的直径为 \(1\),因为任意两个点都可以直径过 \(1\) 条边到达。所以,如果 \(k=1\),只有完全图才成立,否则不成立。接着在考虑能否构造出直径为 \(2\) 的图。我们会发现只要图连通,就一定能构造出来直径为 \(2\) 的图,因为菊花图的直径为 \(2\),而在菊花图上加边不会让直径变大,所以只要 \(k>1\) 就一定能构造出来。

C. Portal

\(Problem\)

给定一张 \(n\times m\) 的矩阵,每个格子有空和黑曜石两种状态,你可以花费一步操作将空格子变成黑曜石或将黑曜石变成空格子。一个子矩阵可以形成传送门需要具备以下条件:

  1. 高度 \(\ge 5\),宽度 \(\ge 4\)。注意,传送门不能横过来看,宽就是宽,高就是高。
  2. 中间部分必须全是空格子。
  3. 四周边框必须全是黑曜石。
  4. 四角不限。

问至少需要几次操作才能搭建一个传送门。

\(\sum n\le 400,\sum m\le 400\)

\(Solution\)

这道题我从9月30号读题一直到10月8号才做出来,历尽了千辛万苦。

记输入的矩阵为 \(a\),用 \(0\) 表示空格,\(1\) 表示黑曜石。

首先预处理出每一行的前缀和,以便我们 \(O(1)\) 查询一段横向区间里有多少块黑曜石,我们用 \(s[i][j]\) 表示。

然后,枚举合法的左右边界(\(r-l\ge 3\)),我们记 \(len=r-l-1\) 表示中间部分的宽度,对于每一个左右边界,记 \(t[i]\) 表示前 \(i\) 行全变成 \(100...001\) 的格式需要花费的步数,本质上是竖向的前缀和:\(t[i]=t[i-1]+(s[i][r-1]-s[i][l])+(2-a[i][l]-a[i][r])\)。然后我们考虑如何 \(O(1)\) 计算搭建一段以 \(u\) 为上边界,\(d\) 为下边界的传送门的步数:首先让中间和左右边框合法(\(t[d-1]-t[u]\)),再让上边框合法(\(len-(s[u][r-1]-s[u][l])\)),同理再让下边框合法(\(len-(s[d][r-1]-s[u][l])\))。加起来,则为:

\(t[d-1]-t[u]+(len-(s[d][r-1]-s[d][l]))+(len-(s[u][r-1]-s[u][l]))\)

将与 \(u,d\) 有关的项分开,方便处理:

\(2len+(t[d-1]-s[d][r-1]+s[d][l])-(t[u]+s[u][r-1]-s[u][l])\)

我们记 \(f[i]=t[i-1]-s[i][r-1]+s[i][l],g[i]=t[i]+s[i][r-1]-s[i][l]\),则上式可简化为 \(2len+f[d]-g[u]\)。

现在考虑从上到下扫下边界,对于每一个下边界,我们要使步数尽可能小,即让 \(2len+f[d]-g[u]\) 尽可能小,就要让 \(g[u]\) 尽可能大,于是我们从上到下扫的时候,记录以下当前扫过的 \(g[u]\) 的最大值 \(maxn[i]=\max(maxn[i-1],g[i])\),那么对于每一个下边界 \(d\),最小步数就为 \(2len+f[d]-maxn[d-4]\),整个算法的时间复杂度就可以做到 \(O(m^2n)\)。

标签:2n,le,745,len,黑曜石,直径,CFR,Div,边界
From: https://www.cnblogs.com/cxm1024/p/17168421.html

相关文章

  • CFR-746-Div-2解题报告
    VP做出来一道,补题又做出来3道。A.GamerHemose\(Problem\)你有\(n\)个武器,要打一个体力为\(H\)的敌人,第\(i\)个武器可以对敌人造成\(a_i\)的伤害,每把武器不能......
  • CFR-109解题报告
    A.Hometask题意:一个字符串,给定\(k\)个限制字符对\((a_i,b_i)\),要求从原串中删除尽可能少的字符,使得不存在一个相邻的限制字符对。保证\(a_i\neb_i\),且每个字符最多......
  • CFR-744-Div-3解题报告
    赛时AC2道题,掉大分(哭)A.Casimir'sStringSolitaire题目传送门\(Problem\)给你一个仅含A,B,C的字符串,每次可以删掉一个A和一个B,或一个B和一个C,位置、顺序不......
  • CFR-840-Div-2解题报告
    比赛传送门C.AnotherArrayProblem题意:给你一个数组\(a\),每次可以选两个位置\(i,j(i<j)\),将\([i,j]\)内的所有数替换为\(|a_i-a_j|\)。问最终数组的和最大为多少......
  • CFR-843-Div-2解题报告
    比赛传送门C.InterestingSequence题意:给你\(n,x\),求最小的\(m\gen\),使\(n\&(n+1)\&(n+2)\&\cdots\&m=x\),或判断无解。首先每一位独立,分别考虑。与运算每一位都......
  • CFR-850-Div-1解题报告
    比赛传送门A.Monsters(easyversion)题意:有\(n\)个怪物,每个有\(a_i\)滴血,每次可以选择一个怪物减一滴血,也可以“让所有怪物减一滴血,且如果杀死怪物则重复操作”。......
  • EDU-CFR-115-Div-2解题报告
    赛时AC3道,补题做出来一道A.ComputerGame\(Problem\)有一个\(2\timesn\)的01矩阵,1为障碍,你要从\((1,1)\)走到\((2,n)\),每一步只能向右、上、下、右上、右下走,问......
  • EDU-CFR-116-Div-2解题报告
    比赛传送门做出来五道题。A.ABBalance{%noteinfono-iconproblem%}给你一个只含有a和b的字符串,问怎样通过修改尽可能少的字符,使得ab的数量和ba的数量相......
  • EDU-CFR-138解题报告
    比赛传送门A.CowardlyRooks题意:有一个\(n\timesn\)的棋盘,有\(m\)个位置上有车,保证互不攻击。问是否能将一个车移动一次使得仍然互不攻击。稍加思考可得,如果\(......
  • EDU-CFR-143解题报告
    A.TwoTowers题意:有两个积木塔,由红色/蓝色积木组成,你每次可以将一个塔的塔顶放到另一个塔上,问任意次操作后能否使得两座塔都是红蓝相间。可以将一个塔全部转移到另一......