当前位置: 首页 > news >正文

【题解】[UTPC2024] C.Card Deck

题目链接,感觉是计数神题。

原题的模型是每一步可以选择顶部 k k k 张牌的一个子集 X i X_i Xi(可以为空)放在袋中,求 m m m 轮之后所有可能的袋子里牌所组成的集合的大小之和。考虑进行转化,只考虑前 k k k 张牌,每张牌都有一个属性 t i ∈ { 0 , 1 , ⋯ , m } t_i \in \{0,1,\cdots,m\} ti{0,1,,m}。若 t i = 0 t_i = 0 ti=0,表示这张牌永远不会被放入袋子中,否则表示这张牌会在第 t i t_i ti 轮被放入袋子中。若 S j S_j Sj 表示第 j j j 轮后袋子里的数,最后求 ∑ i = 1 m ∣ S j ∣ \sum \limits_{i = 1}^m |S_j| i=1mSj

设两个模型为 A , B A,B A,B,下证明两个模型等价。

证明

  • A → B A \to B AB
    对于 ∀ i ∈ [ 1 , k ] \forall i \in [1,k] i[1,k],若 i ∈ X j i \in X_j iXj 则有 t i = j t_i = j ti=j,否则 t i = 0 t_i = 0 ti=0

  • B → A B \to A BA
    在进行第 j j j 步前,所有 t i < j t_i < j ti<j 的牌都已经放入袋中,总共有 ∣ { i ∣ t i < j } ∣ |\{i \mid t_i < j\}| {iti<j} 张。由于放入袋中后会进行补位,也就是说我们并不关心补进来的是哪一张真正的原始牌,当进行第 j j j 步前,牌堆的前 k k k 张牌一定存在所有 t i = j t_i = j ti=j 的牌,也就是说第 j j j 步删掉 { i ∣ t i = j } \{i \mid t_i = j\} {iti=j} 是合法操作。

因此可以对每一张牌单独计算贡献。也就是 ∑ i = 1 m ∣ S j ∣ = ∑ i = 1 k 1 t i > 0 = ∑ i = 1 k t i \sum \limits_{i = 1}^m |S_j| =\sum \limits_{i = 1}^k \bold{1}_{t_i > 0} = \sum \limits_{i = 1}^k t_i i=1mSj=i=1k1ti>0=i=1kti
。共有 k k k 张牌,所有合法的 { t i } \{t_i\} {ti} 的方案数为 ( m + 1 ) k (m + 1)^k (m+1)k。强制令 t i = j t_i = j ti=j,则这张牌的贡献为 ( m + 1 ) k − 1 (m + 1)^{k - 1} (m+1)k1。由于 t i ∈ { 0 , 1 , ⋯ , m } t_i \in \{0,1,\cdots,m\} ti{0,1,,m},则这张牌出现在集合里的次数为 ( 0 + 1 + ⋯ + m ) × ( m + 1 ) k − 1 (0 + 1 + \cdots + m) \times (m + 1)^{k - 1} (0+1++m)×(m+1)k1,即 m k m + 1 2 \frac{mk^{m + 1}}{2} 2mkm+1。再由于 k k k 张牌等价,所以最后的答案为

k m k m + 1 2 \dfrac{kmk^{m + 1}}{2} 2kmkm+1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/236926.html

相关文章:

  • altium designer2024绘制stm32过程笔记x`
  • 多区域协同的异地多活AI推理服务架构
  • qt使用笔记二:main.cpp详解
  • Linux系统 - 线程 -6- 线程安全函数和可重入函数
  • LangChain4j 学习教程项目
  • TensorFlow深度学习实战(20)——自组织映射详解
  • 跨平台资源下载工具:res-downloader 的使用体验
  • 实现简易动效
  • pygame开发的坦克大战
  • 计算机网络实验——入侵检测系统实验
  • 程序代码篇---Python串口
  • Qt Quick Layout功能及架构
  • 从代码学习深度强化学习 - 初探强化学习 PyTorch版
  • 基于 Transformer robert的情感分类任务实践总结之二——R-Drop
  • model.classifier 通常指模型的分类头 是什么,详细举例说明在什么部位,发挥什么作用
  • 多模型协同:基于 SAM 分割 + YOLO 检测 + ResNet 分类的工业开关状态实时监控方案
  • Modbus RTU/TCP 协议详解与Spring Boot集成指南
  • 什么是异步 I/O?深入解析从基础到实践
  • 20250607-在Ubuntu中使用Anaconda创建新环境并使用本地的备份文件yaml进行配置
  • similarsites网页版入口,一键查询相似网站
  • Go 并发编程深度指南
  • 【MATLAB代码】基于MCC(最大相关熵)的EKF,一维滤波,用于解决观测噪声的异常|附完整代码,订阅专栏后可直接查看
  • mariadb5.5.56在centos7.6环境安装
  • JVM 垃圾回收器 详解
  • Python网页自动化测试,DrissonPage库入门说明文档
  • Spring Boot 3.3 + MyBatis 基础教程:从入门到实践
  • Android座舱系统Agent改造方案
  • cmake编译LASzip和LAStools
  • CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)
  • Java优化:双重for循环