首页 > 其他分享 >闲话 23.3.30

闲话 23.3.30

时间:2023-03-30 12:27:02浏览次数:51  
标签:frac min 闲话 sum 30 boss 23.3 text mod

模拟赛

摆!

T1 卷王

考虑差分异或 得到一个序列 a
第 \(t\) 秒按第 \(i\) 个开关会使得第 \(t + \text{dt}\) 秒 \(a[i + \text{dt}], a[i + \text{dt} + 1]\) 两个位置
异或带来的变化会保存

可以发现的是,除了 \(a[i]\) 外,所有 \(i + p (p > 0)\) 的位置都只有在第 \(t + p\) 的时刻翻转 而 \(a[i]\) 总已经被翻转了
所以如果确定了一个操作到现在的时间,我们可以轻易确定这个状态对现在 a 序列的影响
这样我们不妨设计一种状压 dp 来倒着枚举操作序列
设 \(f(t, S)\) 表示后 \(t\) 秒内(操作序列长度为 \(t\)) \(S\) 状态是/否可以翻转到全 0
初始 f(0, 00...0) = true;
每次枚举状态 f(t, S) = true,并枚举要加入到操作序列首的操作
可以是不操作,即 f(t + 1, S) = true
然后枚举当前操作位置为 p,我们知道这次操作肯定翻转 \(a[p]\)
并且由于这次操作到当前操作数/时间为 \(t + 1\) 可以知道 \(a[t + 1 + p]\) 也被翻转
这 dp 是 \(O(n^2 2^n)\) 的

我们没必要对每个长度都处理一遍答案
对于一个状态 S,在 S 前面加上任意多的 0 对答案没有影响
因为操作只会向后贡献
所以只需要处理长度为 \(\max n = 16\) 的即可
并且,打表可以发现最大操作次数不会超过 8,我们能把每两个答案压进一个可见字符
这样代码长度 \le 40k,总复杂度 O(2^n + Tn)(

T2 赢王

首先 \(a[l, r]\) 可行当且仅当 \(k \mid \sum_{i = l}^r a_i\),原因显然
考虑对每个 \(r\) 统计合法的 \(l\),这样的 \(l\) 可能有 \(O(n)\) 个,性质不太好
考虑对 \(a\) 作前缀和得到 \(s\),则我们需要的就是 \(\equiv s_r \pmod k\) 的 \(s_{l - 1}\)

先不考虑整体咋算,考虑确定了区间 \(a[l, r]\) 如何计算贡献,记为 \(b[1, m]\)
从前往后考虑,对 \(b_1\) 只有动 \(b_2\) 可以修改 \(b_1\),这个操作数是 \(\min(b_1 \text{ mod } k, k - b_1 \text{ mod } k)\) 的
然后从前往后扫,对 \(b\) 作前缀和得到 \(t\),到第 i 个元素时其实 \(b_i = t_i\)
所以对 \(b\) 的答案就是 \(\sum_{i = 1}^m \min(t_i \text{ mod } k, k - t_i \text{ mod } k)\)

考虑 \(a[l, r]\) 是可行子序列,并存在 \(k\) 满足 \(a[l, k], a[k + 1, r]\) 是可行子序列
设 \(\sum_{i = l}^k a[i] = t\),对 \(a[l, r]\) 作前缀和得到 s,我们还知道 \(k \mid t\)
则我们知道答案 \(f(l, r)\) 就是

\[\begin{aligned} &\sum_{i = l}^r \min(s_i \text{ mod } k, k - s_i \text{ mod } k) \\ = \ & \sum_{i = l}^k \min(s_i \text{ mod } k, k - s_i \text{ mod } k) + \sum_{i > k}^r \min(s_i \text{ mod } k, k - s_i \text{ mod } k) \\ = \ & f(l, k) + \sum_{i > k}^r \min((s_i - s_{k} + t) \text{ mod } k, k - (s_i - s_{k} + t) \text{ mod } k) \\ = \ & f(l, k) + \sum_{i > k}^r \min((s_i - s_{k}) \text{ mod } k, k - (s_i - s_{k}) \text{ mod } k) \\ = \ & f(l, k) + f(k + 1, r) \end{aligned}\]

这样我们就有了平凡的 \(O(nk)\) 做法
首先按 \(s_i \text{ mod } k\) 分组,组数是 \(O(k)\) 的
然后我们对每组直接 \(O(n)\) 处理出相邻点间的答案
一段的贡献就是包含他的区间个数,这个平凡算
然后加上没贡献的区间的 \(-1\) 即可
大概是 60pts

然后不会了 摆摆摆

T3 稳王

什么组合数?

期望回合
= 1 + \(\sum_{i\ge 0}\) 第 \(i\) 轮打不死 boss 的概率
= 1 + \(\sum_{S}\) 拿到的打不死 boss 的手牌是 \(S\) 的概率
所以考虑统计所有打不死 boss 的手牌和概率
顺序没有影响 所以考虑按 S 里有的手牌种类计数

先推个式子:

\[\sum_{i\ge 0} \frac{1}{x^i} = \sum_{i\ge 0} \left(\frac{1}{x}\right)^i = \frac{1}{1 - \frac{1}{x}} = \frac{x}{x - 1} \]

自然有

\[\sum_{i\ge 1} \frac{1}{x^i} = \frac{x}{x - 1} - 1 = \frac{1}{x - 1} \]

  1. 只有复读
    6
    答案就是 \(\sum_{i\ge 1} 3^{-i} = 1/2\)

  2. 只有火球
    每次打 2 点伤害,打 \((n + 1) / 2\) 次 boss 就没了
    设 m = \((n - 1) / 2\)
    答案就是 \(\sum_{i = 1}^n 3^{-i} = (1 - (1/3)^m) / 2\)

  3. 只有毒药
    每次打一张毒药 打 \(n + 1\) 次 boss 就没了
    答案就是 \(\sum_{i, 1, n} 3^{-i} = (1 - (1/3)^n) / 2\)

  4. 复读 + 火球
    只要有火球,那复读 = 火球
    全是复读和全是火球的已经统计完了
    那答案就是

\[\begin{aligned} & \sum_{i = 1}^m \sum_{j = 1}^{i - 1} \binom{i}{j} (1/3)^{j} (1/3)^{i - j} \\ = \ & \sum_{i = 1}^m \left(\frac{2}{3}\right)^i - 2\times \left(\frac{1}{3}\right) ^i \\ = \ & 1 + \frac{1 - 2^{m + 1}}{3^m} \end{aligned}\]

  1. 火球 + 毒药
    最优策略肯定是第一张打毒药,剩下的毒药伤害是 1,火球伤害是 3
    我们给 boss 血量 + 1,钦定第一张打出去的毒药有伤害
    设 \(f(dmg)\) 是给 boss 打了 \(dmg\) 伤害的概率 答案就是 \(\sum_{i\le n} f(i)\)
    dp 转移是 \(f(k) = f(k - 1) / 3 + f(k - 3) / 3\)
    这可以矩阵快速幂优化 就是

\[\begin{bmatrix} f(k) \\ f(k - 1) \\ f(k - 2) \\ ans(k - 1) \end{bmatrix} = \begin{bmatrix} 1/3 & 0 & 1/3 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} f(k - 1) \\ f(k - 2) \\ f(k - 3) \\ ans(k - 2) \end{bmatrix} \]

  1. 复读 + 毒药
    毒药伤害是 1,复读伤害是 2
    如上 dp 即可

  2. 三种都有
    仍然是直接维护矩阵快速幂

值得注意的是,最终需要做一些容斥,比方说 5. 需要删掉全是毒药的情况

总时间复杂度 \(O(T 4^3 \log n)\) ……吧?

没有代码!摆摆摆!

标签:frac,min,闲话,sum,30,boss,23.3,text,mod
From: https://www.cnblogs.com/joke3579/p/chitchat230330.html

相关文章

  • 产品原型5-20230329
                  ......
  • 【日总结】2023.3.29
    happyguyround,godround2023省选模拟happyguyroundT1游戏贪心题。首先可以观察到两个性质:\(a_1,a_n\)肯定最后取;若\(a_{i-1}>a_{i}<a_{i+1}\),那么......
  • C51_DS1302
        CH=1;时钟停止(秒停止) wp是写保护,0是解除写保护  低位第一个发   ......
  • Beyond Compare免费保姆级激活教程(亲测日期:2023.3.29)
    最新,亲测可用(亲测日期:2023.3.29)如果成功使用后,记得回来点个赞哦!BeyondCompare具备的丰富实用功能:1.并列比较文件夹、FTP网站或Zip文件;2.为以后的比较保存快照;3.类似浏......
  • luogu P3308 [SDOI2014]LIS
    题面传送门涨知识了,第一次知道网络流删边不用全图重跑。首先我们先跑一个暴力dp,出\(f_i\)表示以\(i\)结尾的最长上升子序列长度。然后我们将其按照这个dp值分层,相......
  • 下载安装MyAQL数据库8.0.30
    【本篇是参考多篇下载教程的个人安装记录】MySQL简介:MySQL是目前流行的开源免费数据库,属于ORACLE公司,当前更新到8.0.32版本,本次下载我选择的是8.0.30版本(一般软件的最新......
  • Dell H730 write-through和write-back配置
    0x00 说明创建raid时,会要求选择writePolicy和readpolicy以及DiskcachepolicyWritePolicy1.write-though数据在写入存储的同时,要写入缓存,这种方式安全但是会牺......
  • 每日总结-23.3.29-利于云服务器和javaweb简单实现一个网站
    3月29日总结今日使用云服务器和tomcat实现了简单网站的搭建。使用工具(个人体验,仅作参考,使用其他版本或工具应该也行):1.移动云新人体验免费云服务器一台。(个人专享:通......
  • 2023.3.29每日总结
    今天学习了运用jsp实现在线的视频播放0.MP4格式主代码:<body><videowidth="320"height="240"controls="controls"><sourcesrc="zp.mp4"type="video/......
  • Labview Ethernetip TCP网口通讯欧姆龙PLC OmronNX1P2NJ501NJ301PLC标签通讯
    LabviewEthernetipTCP网口通讯欧姆龙PLCOmronNX1P2NJ501NJ301PLC标签通讯CIP通讯比Fins通讯更完美。1.自定义变量读写2.支持Bool单点或数组读写3支持数字格式单个......