首页 > 其他分享 >重庆八中周赛 10

重庆八中周赛 10

时间:2024-03-04 15:11:07浏览次数:21  
标签:周赛 10 text 枚举 八中 times 最小值 lca dp


\[\large \text{Round 4 : cqbz Weekly Round 10} \]

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

\(\text{D: cloud}\)

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

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

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

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

\(\text{Submission}\)

\(\text{E: matrix}\)

解法一:

考虑 \(\text{dp}\)。

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

对于初始值,显然有 \(dp_{0,0} = 1\)。

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

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

  • 对于剩余情况,显然这一行已经有 \(1\) 了,所以我们只需要考虑列的情况。显然,我们需要从 \(n - (j - k)\) (就是在上一行还没有产生这 \(k\) 列的状态) 选出 \(k\) 列来填补 \(1\),对于上一状态就已经最小值为 \(1\) 的列,显然是可以乱选的,也就是 \(m^{(j-k)}\),那么对于剩余的 \(n-j\) 列,只要不取 \(1\) 就可以了,也就是 \((m-1)^{n-j}\) 。总的来说,就是 \(dp_{i,j} = \sum _{k=1} ^ j dp_{i-1,j-k} \times C(n - j + k,k) \times m^{(j-k)} \times (m-1)^{n-j}\)。

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

最后,直接输出 \(dp_{n,n}\) 即可。

总复杂度为 \(O(n^3 \log n)\)。

解法二:

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

乱推一波式子,显然有 \(\sum_{i=1}^n \sum_{j=1}^n (-1)^{i+j} \times C(n,i) \times C(n,j) \times (k-1)^{(i+j)\times n-i\times j} \times (k-1)^{(n-i)\times (n-j)}\)。

\(\text{Submission}\)

\(\text{F: virus}\)

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

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

首先可以枚举根是谁

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

所以接下来考虑一个简单的递推。定义 \(f_{i,j}\) 表示 \(x\) 有 \(i\) 步要走,\(y\) 有 \(j\) 步要走,\(x\) 比 \(y\) 先到的概率。(这个值已经说明过与 \(x,y\) 无关)

对于初始值,显然有 \(dp_{0,i}=1\)。

如果你走的下一步并不能靠近 \(x\) 或者 \(y\),那么这一步显然对答案没有任何影响,我们就只需要考虑是靠近了 \(x\) 还是靠近了 \(y\),所以有 \(f_{i,j}=\dfrac{f_{i-1,j}+f_{i,j-1}}{2}\)。

最后,对于每一个根,枚举 \((i,j)\),其产生的贡献就是 \(f_{{dep_i-dep_{lca(i,j)},{dep_j-dep_{lca(i,j)}}}}\) 之和。

时间复杂度 \(n^3\log n\)(因为 \(lca\) 需要复杂度,但是也可以优化)。

\(\text{Submission}\)

\(\text{What I learned:}\)

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

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

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

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

标签:周赛,10,text,枚举,八中,times,最小值,lca,dp
From: https://www.cnblogs.com/SFsaltyfish/p/18051860

相关文章

  • redis自学(10)Set
    Set是Redis中的单列集合,满足下列特点:不保证有序性保证元素唯一(可以判断元素是否存在)求交集、并集、差集  以上操作,都需要判断元素是否存在,因此可以看出,Set对查询元素的效率要求非常高 Set是Redis中的集合,不一定确保元素有序,可以满足元素唯一、查询效率要求极高。为了......
  • P10220 [省选联考 2024] 迷宫守卫 题解
    说一下自己赛时做法。赛时会了,但没能调出来,几乎确定进不去队了,留下这篇题解作为这次比赛的记录吧。称激活守卫为打开开关。首先考虑,如果确定所有开关的情况,Bob有一个简单的贪心做法:当走到一个点时,递归其左右子树并得到两个序列,若右子树的对应序列的小于左子树的对应序列,则右边......
  • MBR10200FCT-ASEMI适配开关电源MBR10200FCT
    编辑:llMBR10200FCT-ASEMI适配开关电源MBR10200FCT型号:MBR10200FCT品牌:ASEMI封装:ITO-220AB最大平均正向电流(IF):10A最大循环峰值反向电压(VRRM):200V最大正向电压(VF):0.90V工作温度:-65°C~175°C反向恢复时间:ns重量:1.5615克芯片个数:2芯片尺寸:102mil正向浪涌电流(IFMS):150AMBR1......
  • P10220 [省选联考 2024] 迷宫守卫
    二分+贪心+DP。跟D1T2思路有点类似,反正很简单。复杂度大约是\({\rmO}(n^22^n)\)。#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e5+5;constllinf=1e18;intT,n,q[N];llK,w[N];vector<int>Q;lldp(into,intd,in......
  • KBP310-ASEMI小功率电源适配器KBP310
    编辑:llKBP310-ASEMI小功率电源适配器KBP310型号:KBP310品牌:ASEMI封装:KBP-4正向电流(Id):3A反向耐压(VRRM):1000V正向浪涌电流:60A正向电压(VF):1.10V引脚数量:4芯片个数:4芯片尺寸:MIL功率(Pd):大功率设备工作温度:-55°C~150°C类型:插件整流桥KBP310整流桥描述:ASEMI品牌KBP310是......
  • 10_C# 中的 String 和 StringBuilder 的区别
    C#中的String和StringBuilder的区别1.String类String类表示不可变的字符串。一旦创建String对象,其内容就不能再被修改。对String对象进行任何修改操作都会返回一个新的String对象。示例:stringstr1="Hello";stringstr2=str1+"World!";Console.W......
  • 牛客周赛 Round 35
    A.小红的字符串切割思路:拿到了一个长度为偶数的字符串,请你将其切割成长度相等的两部分并输出Code:#include<bits/stdc++.h>usingnamespacestd;intmain(){strings;cin>>s;for(inti=0;i<s.size()/2;i++){cout<<s[i];}c......
  • 初中英语优秀范文100篇-096My views on robots entering the classroom-我对机器人进
    PDF格式公众号回复关键字:SHCZFW096记忆树1Withthedevelopmentoftechnology,ithasbecomepossibleforrobotstoentertheclassroom.翻译随着科技的发展,机器人进入课堂已成为可能。简化记忆课堂句子结构It"是形式主语,真正的主语是不定式短语forrobotsto......
  • 牛客周赛 Round 35
    牛客周赛Round35小红的字符串切割代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;usingpii=pair<ll,ll>;typedefdoubledb;#definefifirst#definesesecondusingi128=__int128_t;usingpiii=pair<ll,pair<ll,ll>......
  • python接口自动化系列(10):保存全局变量
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074实现目标如果后续有请求依赖本次请求的响应结果,那么把依赖数据保存到全局变量,比如token 安装模块jsonpath用于解析json数据pipinstalljsonpath 修改工具类global_variable_tool.py添加方法,用于......