【题解】CF1875

A

  • 注意到:如果钦定使用某个道具,由于倒计时最大值的存在,道具使用得越晚浪费的时间越少。
  • 注意到:如果钦定使用某个道具,那么这个道具的使用时机不重要。
  • 进一步:总是在倒计时只剩 1 秒的时候使用道具即可

B

  • 直觉:\(k\) 好大好大,大胆猜测这俩人实际上只是在来回捣撤某几个数
  • 注意到一个人如果换数,一定是用自己的最小值换对面的最大值
  • 考虑两个人所拥有的数的极值区间 \([l,r]\)\([L,R]\)
    • 区间有交
      先手交换完后一定持有 \(r,R\),此时后手一定持有 \(l,L\)
      后手交换时一定会选择留下 \(l,L\) 中更大的,换来 \(r,R\) 中更大的
      先手再次交换,一定持有 \(r,R\).....
      显然在这种情况下,结果只有两种,具体取决于 \(k\) 的奇偶性
    • 区间无交
      • 先手数更大
        先手显然不换
        后手显然用自己最小的换先手最大的
        先手显然要把后手换的数再换回来
        循环同上,判 \(k\) 奇偶即可...
      • 后手数更大
        先手显然用自己最小的换后手最大的
        后手显然要把先手换的数再换回来
        循环同上,判 \(k\) 奇偶即可...

C

  • 首先考虑是否有解
  • 读完题容易列出式子:\(n\times 2^k \equiv 0 (mod\ m)\)
  • 显然它的充要条件是:除了 \(m\) 可比 \(n\) 多且仅多 \(2\) 这个质因子外,\(n,m\) 质因子完全相同
  • 判断的具体实现:判断\(\frac{m}{\gcd(n,m)}\) 是否是 \(2^k\)
  • 要满足上述式子,显然 \(k\)\(log\) 级别的,也就是说切瓜的次数是 \(log\) 级别的,直接模拟并统计答案即可

D

  • 我们首先加强这道题 \(n\leq 1e6\)
  • 显然 \(a\) 中数的先后顺序不重要,而每种数的个数重要,于是直接存桶
  • 想象一下:mex 需要一个桶前缀全部非 0,我们要做的就是在某个位置”截断“
  • 显然如果要截一个位置,一次性把数全删干净才是最优的
  • 显然截数的位置是递减的
  • 所以我们截数的策略一定形如:从大到小依次删干净某些位置的数,最终把 0 这个位置的数删干净
  • 不妨转换题意:删某个位置的数有代价,求最终把 0 这个位置的数删干净的最小代价
  • 考虑删除一个数的代价:
    • 假设这个数有 \(cnt\) 个,那么就要删 \(cnt\) 次,代价就是这个数彻底删掉之前的 \(mex\times cnt\)
    • 而这个数彻底删掉之前的 \(mex\) 是多少呢?不难发现就是上个删数的位置
  • 设截断 \(i\) 这个数所需最小代价为 \(f_i\)
    容易列出转移方程 \(f_i=f_j+num_j\times cnt_i \ (i+1\leq j \leq [原始序列的mex])\)
  • 注意到我们在设计“代价”时模拟的过程相当于先加代价后删数,与题意相反,这也相当于我们算的答案多了一次全局 \(mex\) 的代价,只需要在输出时减掉即可。
  • 到这里,综上使用 \(O(n^2)\) 的 DP 可以通过原题,但这题的最优解是 \(O(n)\) 的。
  • 考虑数 \(i,j \ (i<j)\)
    如果 \(cnt_i<=cnt_j\) 那显然我们一定不会截断 \(j\) 这个位置,因为这显然不优于截断 \(i\) 这个位置
  • 据此,我们可以删掉需要不可能用到的转移点
  • 考虑怎么把转移点数卡满:
    从小到大考虑每种数,显然每个数的出现次数都比上一个数少一即可,当转移点数达到 \(O(n)\) 量级时,第一个数的出现次数也是 \(O(n)\)
    如此,总共需要 \(O(n^2)\) 个数,也就是说,如果数个数的总数是 \(O(n)\) 的,有效转移点数就是 \(\sqrt{n}\)
  • 再套上述 DP,显然总时间复杂度 \(O(n)\)

E

  • 对于 \(a, b, c, d, m\) 按位考虑,发现相同的 \((a, b, m)\) 无论如何操作必然还是相同的。
  • 于是考虑对于每个可能的 \((0/1, 0/1, 0/1)\),所有终态有 \((c = 0/1, d = 0/1)\) 或者不确定。这样我们对于一组询问,可以压缩成一个状态,而本质不同状态有 \(5^8\) 种。预处理一下最短路即可。然后对于不确定的位,预处理的时候枚举它是什么即可。
  • 时间复杂度 \(O(5^8 + t \log V)\)
  • 感觉这题教育意义大于实际做的价值:
    • 位运算位之间互相独立,这通常可以成为突破口
    • 看到状态转移乱七八糟的时候可以考虑图论最短路

F

  • 非常好概率 dp 题
  • 注意到题目直接给出拓扑逆序,所以容易有一个显然的想法:对于每个 u,选择概率最大的 v 去走,如果失败了再换下一个
  • 注意到:走一个点成功的概率与图结构完全无关,而只与点的出度数量与这个点是第几个被选择的有关,且“失败”后删掉两条边这种东西很像是子结构递归,这启发我们考虑 dp
  • 设状态 \(f_{i,j}\) 表示出度为 \(i\) 的点,最终走向概率第 \(j\) 大的 \(v\) 的概率
  • 容易写出 \(f_{1,1}=1\quad f_{2,1}=0.5\quad f_{2,2}=0\)
  • 转移:\(f_{i,j}=f_{i-2,j-2}\times \frac{j-2}{i} + f_{i-2,j-1}\times\frac{i-j}{i}\)
    转移显然
  • 预处理出 \(f\) 后直接按拓扑序 dp 一下就好了
posted @ 2024-11-07 19:40  yeyou26  阅读(52)  评论(0编辑  收藏  举报