重庆八中周赛 10


Round 4 : cqbz Weekly Round 10

一言:
无论你在哪里,就算我看不见你,我也会一直注视着你。
——妖精的尾巴

D: cloud

如果把买入和卖出分开处理显然会有一些繁琐,所以我们考虑把他们合在一起,那么买入的利润就是价格的相反数,而卖出就会失去核心。

我们可以很显然的想到将核心当作容量,利润当作价值,定义 dpi 表示还剩下核心数量为 i 的最大利润,那么显然就可以想到一个 01 背包 DP

但是只是单纯这样的话,我们会发现,对于一些卖出,他可能时钟频率不合法。

所以我们考虑将时钟频率从小到大排序,然后根据最开始的分析来一遍背包 DP,最后枚举还剩下多少个核心,取一个最大值即可。(特别的,对于时钟频率相同的,将买入的放前面,卖出的放后面。)

Submission

E: matrix

解法一:

考虑 dp

我们定义 dpi,j 表示前 i 行,在保证每一行的最小值为 1 的前提下,有 j 列的最小值是 1。另外,为了方便叙述,我们定义 m 为原题中的 k

对于初始值,显然有 dp0,0=1

接着我们考虑转移。首先顺着枚举状态中的 i,j ,然后枚举 k 表示这一行会新产生 k 列的最小值是 1

  • 对于 k=0,由于第 i 行必须有 1,并且不能再新产生一列的最小值是 1,所以只能在这最小值已经为 1j 列中,使得其中必须存在一个 1。计算的话,就是用乱选减去一个 1 都不选,及 dpi,j=(mj(m1)j)×dpi1,j

  • 对于剩余情况,显然这一行已经有 1 了,所以我们只需要考虑列的情况。显然,我们需要从 njk (就是在上一行还没有产生这 k 列的状态) 选出 k 列来填补 1,对于上一状态就已经最小值为 1 的列,显然是可以乱选的,也就是 m(jk),那么对于剩余的 nj 列,只要不取 1 就可以了,也就是 (m1)nj 。总的来说,就是 dpi,j=k=1jdpi1,jk×C(nj+k,k)×m(jk)×(m1)nj

将两个部分的解加起来即可。

最后,直接输出 dpn,n 即可。

总复杂度为 O(n3logn)

解法二:

考虑容斥,枚举有 i 行,j 列的最小值不是 1

乱推一波式子,显然有 i=1nj=1n(1)i+j×C(n,i)×C(n,j)×(k1)(i+j)×ni×j×(k1)(ni)×(nj)

Submission

F: virus

这题应该是最有价值的了。

题意就是求逆序对个数的期望,不难发现,对于树上的一对点对 (i,j),i>j,那么显然最终的答案就是求 ij 先到的概率之和。

首先可以枚举根是谁

仔细思考可以发现,对于是 i 先还是 j 先到,他的概率只会与走到 lca(i,j) 之后的操作相关,也就是说,就是要求 ix 步到 lca(i,j)jy 步到 lca(i,j),要求 i 先到的概率。(显然,这个概率实际上只与 x,y 有关)

所以接下来考虑一个简单的递推。定义 fi,j 表示 xi 步要走,yj 步要走,xy 先到的概率。(这个值已经说明过与 x,y 无关)

对于初始值,显然有 dp0,i=1

如果你走的下一步并不能靠近 x 或者 y,那么这一步显然对答案没有任何影响,我们就只需要考虑是靠近了 x 还是靠近了 y,所以有 fi,j=fi1,j+fi,j12

最后,对于每一个根,枚举 (i,j),其产生的贡献就是 fdepideplca(i,j),depjdeplca(i,j) 之和。

时间复杂度 n3logn(因为 lca 需要复杂度,但是也可以优化)。

Submission

What I learned:

  • 对于一堆 i 对应一个 j,如果有一些限制条件,使得其他的 i 不合法,且为了方便求解,我们需要把 i,j 合并在一起算,那么我们可以考虑排一个合适的顺序,使得 j 前面的 i 对他全部合法,这样更能方便求解。

  • 对于组合数学,一个很好的方式就是背包 DP

  • 对于树上 i,j 两个点的一些对比,是否只需要从他的 lca(i,j) 开始呢。

  • 考场上第五题文件名为 martix 但我拼的 matrix ,所以100分没了,出题人你真的英语就这么好吗。。下次复制吧。

posted @   Saltyfish6  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
Document
点击右上角即可分享
微信分享提示