首页 > 其他分享 >CF div2 990(A~E)

CF div2 990(A~E)

时间:2025-01-15 13:33:22浏览次数:1  
标签:code 990 所有 CF 枚举 一列 元素 移动 div2

VP赛时\(4\)题,发挥得比较不错的一场,并且这场也偏简单。

A

数数题,找好规律直接模拟即可

code

B

简单排列组合题

显然总方案数为:

\[ n! /(a_1! * a_2! * ... * a_m!) \]

\(a_1到a_m\)表示某种字符的数量

想最小化总方案数,只能最大化上式分母的值。而题目操作等价于将某个\(a_i\)减\(1\),并将某个\(a_j\)加\(1\)。由全排列式的定义,显然将最小的\(a_i\)减\(1\),并将最大的\(a_j\)加\(1\)是最优的。

注意当所有\(a_i\)均相同时,若出现了超过一种字符,则要选不同的字符。

code

C

超级简单的一个div2 C题

逆向思考,计算路径和最大值,等价于计算所有没走的格子之和的最小值。而题中操作等价于可以将列任意排列,这样就相当于除了向下走的那一列,剩下的\(n-1\)列中可以不选其中任意一个数——若不选第一行的数,则该列在向下走那一列的右侧;若不选第二行的数,则该列在向下走那一列的左侧。

则直接贪心取每一列的最小值不选即可。枚举每一列作为刚开始不选的那一列,并暴力计算剩下\(n-1\)列的最小值之和即可,复杂度\(O(n^2)\)。

code

D

显然,每个元素最多只会被操作一次。(证明略)

考虑原序列:当某个元素的后面存在比它小的数时,它必然要被移动,以让后面比它小的元素移动到前面,以达到字典序最小。所以可以先通过一轮扫描来确定哪些元素一定要操作。

其次,由于某些元素移动到了后面,那些还没移动的元素后面又会出现一些新的值,而这些值即为 移动过的所有元素\(+1\)。所以需要再对所有没有移动的数扫一遍,若其值超过了移动后的所有数的最小值,则它也需要被移动。

经过以上操作后,就可以保证任意未移动的数的值均\(<=\)任意移动的数的值。将已经移动的数排个序,然后先将未移动的数顺序输出,再输出移动了的数即可。

code

E

考察比较全面的一道题,代码能力要求也比较高。

首先需要将所有点离散化,这样才能在\(O(n)\)的范围内枚举。

然后可以发现,最优解内的坐标轴\(x,y\)一定可以经过某些点(证明略)。这样,就不需要枚举离散化后\([1,n]\)上的所有数,只需要顺序枚举所有已有点的坐标即可。

考虑顺序枚举所有点的 \(x\) ,这样就将所有点分成了左右两部分。若对于任意给定的\(y\),可以知道每一侧中 \(<=y\) 的点的数量,就可以在给定的\(x,y轴\)下计算出四个象限内的点数。由于\(x\)的枚举会使某一侧增加一些点,而另一侧减少一些点,故涉及修改操作,需要用两个树状数组来维护每一侧所有点的\(y\)。而枚举\(y\)时可以利用“最小值在\(y\)上侧(一二象限)还是下侧(三四象限)”这个二段性,使用二分来枚举\(y\)。在二分函数内更新全局最优解即可。

具体细节看代码,复杂度\(O(nlog^2n)\)。

code

标签:code,990,所有,CF,枚举,一列,元素,移动,div2
From: https://www.cnblogs.com/jjjxs/p/18671930

相关文章

  • CF1956F Nene and the Passing Game 解题报告
    假设\(j>i\),则:\(i+l_i\lej-l_j,i+r_i\lej-r_j\)所以相当于看区间\([i+l_i,i+r_i]\)和区间\([j-r_j,j-l_j]\)是否有交集可以将这些区间放在数轴上,考虑建虚点,将数轴上的每个点向包含它的区间连边但是这样会有一个问题,记加为右区间,减为左区间,此时就无法判断是哪种区间在相......
  • cf566D Restructing Company
    给定数组a[n],初始时a[i]=i,有q次操作:操作1、1xy,表示合并x和y操作2、2xy,表示合并区间[x,y]操作3、3xy,表示询问x和y是否在同一个集合1<=n<=2E5;1<=q<=5E5分析:可以用set+并查集来做,这里用区间并查集来做,在普通并查集的基础上增加ne变量,来维护下一个没合并的位置,用于操作2......
  • CF ROUND 847(Div3)
    B告诉你所有元素和,以及拿走一个最大值的剩余元素和,构造原序列。首先肯定有一个元素是最大值,剩下的就是构造一个最大值不超过某个值的,和为定值的序列。最简单的构造方式就是元素和均分,这样可以让最大元素尽量小,肯定不会超过最大值的限制voidsolve(){ cin>>n>>m>>k; int......
  • CF div2 992(A~E)
    VP赛时三题。被AB题卡炸了,C题反倒发挥正常,D题可惜只想到了一半A没发现数据范围很小可以暴力+题干减号看成了加号,导致创造了二十多分钟才过A题的新纪录(codeB贪心or找规律,也是牢了一会儿。显然要贪心地创造出能用上第二个操作的情景。所以从\(1\)位置出发,每次在右侧找一个......
  • python venv的pyvenv.cfg
    一开始是好奇为什么全局python解释器没法用虚拟环境的库,或者反过来说虚拟环境为什么没法使用全局python安装的库,后面才发现pyvenv.cfg这个配置文件才是重点,这个配置文件标明是否使用全局环境的库,以及python的路径和版本pyvenv.cfg是Python虚拟环境中的一个配置文件,位于虚拟......
  • [CF 2055C] The Trails
    思路佛罗里达不养闲人颓了两分钟继续看题,最近不敢用计时器???顺手去修了个电脑,无敌了顺手去修了个\(\rm{VScode}\),无敌了简化题意给定一个\(n\)行\(m\)列的矩阵,矩阵的\((i,j)\)位置上有值\(a_{i,j}\)给定一条从左上到右下的只向下和向右的路径,求如何......
  • Syncfusion Essential Studio Flutter 2024 Crack
    SyncfusionEssentialStudioFlutter2024CrackSyncfusionEssentialStudioFlutter2024Volume4addstrackballforindividualseries,enablingprecisedatatrackingandchartinteractions.SyncfusionEssentialStudioFlutter(availableaspart......
  • 【Raspberry PI】Raspberry PiSP摄像头前端(rpl-cfe)
    1.PiSP相机前端PiSP摄像头前端(CFE)是一个将CSI-2接收器与一个简单的ISP,称为前端(FE)。CFE有四个DMA引擎,可以从四个单独的流写入帧从CSI-2接收到内存。也可以路由其中一个流直接给FE做最少的图片处理,写两个版本(例如,未缩放和缩小版本)将接收到的帧保存到内存中,并且......
  • NfcF.transceive
    NfcF.transceive(Objectobject)基础库2.11.2开始支持,低版本需做兼容处理。以Promise风格调用:不支持小程序插件:支持微信iOS版:不支持微信Android版:支持相关文档:近场通信(NFC)功能描述发送数据参数Objectobject属性类型默认值必填说明dat......
  • NfcF.setTimeout
    NfcF.setTimeout(Objectobject)基础库2.11.2开始支持,低版本需做兼容处理。以Promise风格调用:不支持小程序插件:支持微信iOS版:不支持微信Android版:支持相关文档:近场通信(NFC)功能描述设置超时时间参数Objectobject属性类型默认值必填说明......