题解:P6672 [清华集训2016] 你的生命已如风中残烛

标签

组合数学

分析

首先引入一个引理。

Raney 引理

对于一个长度为 \(n\) 的序列 \(a\),如果 \(\sum\limits_{i=1}^{n}=1\),那么这个序列 \(a\) 的所有循环位移中恰好有一种满足其前缀和序列的所有元素都是正数。

现在看看这道题。题意就是你共有 \(m\) 张牌,\(n\) 张特殊牌。普通牌为 \(0\),特殊牌有一个值 \(w_i\),可以再取 \(w_i\) 张牌,问这些牌有多少种排列情况可以一次取完。

我们可以把每个 \(w_i\) 都减 \(1\)。这样每个普通牌就会变成 \(-1\),刚好相当于牌的数量减少 \(1\)。形象来说,可以把特殊牌看做“欠的债”,普通牌就是每次还一个债,当债还完了刚好就是 \(-1\),此时也相当于手牌出完了。

拿题目所给的序列 \(\{4,0,0,2,0,0,0\}\) 为例,每一位 \(-1\) 后为 \(\{3,-1,-1,1,-1,-1,-1\}\)。

模拟一下出牌过程中还需要取的牌数:\(3\Rightarrow 2\Rightarrow 1 \Rightarrow 2\Rightarrow 1\Rightarrow 0\Rightarrow -1\)。

发现这就是前缀和,而且要赢就需要前 \(m\) 个每个前缀和都非负。设 \(w_i\) 的前缀和是 \(S_i\)。因为最后肯定全部出完所以最后的前缀和 \(S_n\) 肯定是 \(-1\) 可以忽略,并且最后一张牌肯定不会是特殊牌,所以 \(S_{n-1}\) 肯定是 \(0\)。很像刚刚说的 \(\texttt{Raney}\) 引理。不过有区别的两点是,现在的 \(\sum w_i=0\),并且所求结果限制为非负而不是正数。

为了套用 \(\texttt{Raney}\) 引理,很容易想到在序列开头固定一个 \(1\),这样最终序列和为 \(1\) 且限制条件由非负变正数,答案就是构造后的序列的圆排列数量。不过在加了 \(1\) 之后,方案数会变多,因为在合法的方案中你无法保证这个 \(1\) 一定在开头。考虑反例:\(\{1,3,-1,-1,1,-1,-1\}\),其中有两种合法方案,\(\{3,-1,-1,1,-1,{\color{red}1},-1\}\) 和 \(\{3,-1,-1,1,{\color{red}1},-1,-1\}\)。会发现把新加的 \({\color{red}1}\) 去掉之后其实是一种情况。

思考什么会保证位置不变,能想到在末尾加一个 \(-1\)。因为这个 \(-1\) 如果放在前面一定会使答案更劣所以位置肯定会保持在末尾。但这样怎么套用 \(\texttt{Raney}\) 引理呢?比较好想的一种办法可以把整个序列都取反(包括新加的 \(-1\)),这样序列之和就从原来的 \(-1\) 变成 \(1\),此时可以将这个序列倒置过来,这样开头就一定是 \(1\),再用前缀和(就是原序列后缀和)就可以套用 \(\texttt{Raney}\) 引理了。

现在我们这个序列圆排列的数量是 \(m!\)(因为 \(-1\) 被固定在了末尾),根据\(\texttt{Raney}\) 引理每个圆排列都有一种合法的情况。因为我们新加的 \(-1\) 和原本 \(m-n\) 普通牌代表的 \(-1\) 有所重复,所以要除去重复的情况 \(m-n+1\) 种,最终结果就是 \(\dfrac{m!}{m-n+1}\)。

直接计算输出即可,不贴代码了。

题解:P6672 [清华集训2016] 你的生命已如风中残烛的更多相关文章

  1. 洛谷 P6672 - [清华集训2016] 你的生命已如风中残烛(组合数学)

    洛谷题面传送门 题解里一堆密密麻麻的 Raney 引理--蒟蒻表示看不懂,因此决定写一篇题解提供一个像我这样的蒟蒻能理解的思路,或者说,理解方式. 首先我们考虑什么样的牌堆顺序符合条件.显然,在摸牌任 ...

  2. UOJ273 [清华集训2016] 你的生命已如风中残烛 【数学】

    题目分析: 把$0$卡牌看成$-1$.题目要求前缀和始终大于等于$1$. 最后添加一个$-1$,这样除了最后一位之外大于等于1,最后一位等于0. 构造圆排列.这样的话一个圆排列只有一个满足的情况,然后 ...

  3. P6672-[清华集训2016]你的生命已如风中残烛【结论】

    正题 题目链接:https://www.luogu.com.cn/problem/P6672 题目大意 长度为\(m\)的序列\(a\),有\(n\)个数字不是\(0\),其他\(m-n\)个是\(0 ...

  4. P6666 [清华集训2016] 数据交互 题解

    ## P6666 [清华集训2016] 数据交互 题解 ### 简要题意: n个点的树,m次操作,分别为添加一条路径$(u_i,v_i,w_i)$,和撤消一条路径,每一次操作后求出一条路径使得与这条路 ...

  5. 【UOJ274】【清华集训2016】温暖会指引我们前行 LCT

    [UOJ274][清华集训2016]温暖会指引我们前行 任务描述 虽然小R住的宿舍楼早已来了暖气,但是由于某些原因,宿舍楼中的某些窗户仍然开着(例如厕所的窗户),这就使得宿舍楼中有一些路上的温度还是很 ...

  6. [LOJ#2329]「清华集训 2017」我的生命已如风中残烛

    [LOJ#2329]「清华集训 2017」我的生命已如风中残烛 试题描述 九条可怜是一个贪玩的女孩子. 这天她在一堵墙钉了 \(n\) 个钉子,第 \(i\) 个钉子的坐标是 \((x_i,y_i)\ ...

  7. [UOJ#276]【清华集训2016】汽水

    [UOJ#276][清华集训2016]汽水 试题描述 牛牛来到了一个盛产汽水的国度旅行. 这个国度的地图上有 \(n\) 个城市,这些城市之间用 \(n−1\) 条道路连接,任意两个城市之间,都存在一 ...

  8. [UOJ#274][清华集训2016]温暖会指引我们前行

    [UOJ#274][清华集训2016]温暖会指引我们前行 试题描述 寒冬又一次肆虐了北国大地 无情的北风穿透了人们御寒的衣物 可怜虫们在冬夜中发出无助的哀嚎 “冻死宝宝了!” 这时 远处的天边出现了一 ...

  9. bzoj 4736 /uoj274【清华集训2016】温暖会指引我们前行 lct

    [清华集训2016]温暖会指引我们前行 统计 描述 提交 自定义测试 寒冬又一次肆虐了北国大地 无情的北风穿透了人们御寒的衣物 可怜虫们在冬夜中发出无助的哀嚎 “冻死宝宝了!” 这时 远处的天边出现了 ...

  10. uoj266[清华集训2016]Alice和Bob又在玩游戏(SG函数)

    uoj266[清华集训2016]Alice和Bob又在玩游戏(SG函数) uoj 题解时间 考虑如何求出每棵树(子树)的 $ SG $ . 众所周知一个状态的 $ SG $ 是其后继的 $ mex $ ...

随机推荐

  1. MFC状态栏的创建与添加进度条

    1.首先要创建状态栏 MFC中创建状态栏是用数组来分隔格子的.所以要先弄个数组 下面在自己继承的CWnd类.cpp文件中定义一个静态数组indicators static UINT indicator ...

  2. yum下载包保存到本地

    1.使用yumdownloadonly下载RPM包及依赖包 #下载yumdownloadonly插件 yum install yum-plugin-downloadonly # yum 下载rpm包到 ...

  3. TeX、LaTeX、XeTeX 和 XeLaTeX 之间的关系

    TL;DR 总的来说,在 TeX 世界有两个主要概念,一个是 TeX,一个是 LaTeX.TeX 是一个排版引擎,它为用户提供的排版命令较为底层.LaTeX 是在 TeX 的基础上制作的宏包,它可以让 ...

  4. 2023.7.2-3-4Mssql xp_cmdshell提权

    1.概念 Mssql和SQL sever的一个产品的不同名称.都属于微软公司旗下.而上述Mssql xp_cmdshell提权也属于数据库提权的一种. 主要依赖于sql server自带的存储过程. ...

  5. Python将表格文件中某些列的数据整体向上移动一行

      本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,对其中的每一个文件加以操作--将其中指定的若干列的数据部分都向上移动一行,并将所有操作完毕的Excel表格文件中的数据加以合 ...

  6. Qt 中实现异步散列器

    [写在前面] 在很多工作中,我们需要计算数据或者文件的散列值,例如登录或下载文件. 而在 Qt 中,负责这项工作的类为 QCryptographicHash. 关于 QCryptographicHas ...

  7. 704 二分查找 golang实现

    二分查找(Binary Search)是一种高效的查找算法,适用于 有序数组 或 有序列表.它的基本思想是通过将搜索范围逐渐缩小到目标元素所在的一半,从而大大减少查找的次数. 二分查找的基本原理 排序 ...

  8. 手搓大模型Task03:手搓一个最小的 Agent 系统

    前言   训练一个大模型是一件高投入低回报的事情,况且训练的事情是由大的巨头公司来做的事情:通常我们是在已有的大模型基础之上做微调或Agent等:大模型的能力是毋庸置疑的,但大模型在一些实时的问题上, ...

  9. VB.NET 在 Windows下通过WIn32API获取CPU和内存的使用率

    .net 要获取CPU和内存的使用率,一般是通过 PerformanceCounter 或者 WMI 查询得到,但是如果操作系统经常不正常断电或者别的什么原因,让系统的性能计数器抽风了,可能就会造成初 ...

  10. 利用 ACME 实现SSL证书自动化配置更新

    最近收到腾讯云的通知SSL证书要到期了,本想直接申请的发现现在申请的免费SSL证书有效期只有90天了,顺便了解了一下原因是包括Google在内的国际顶级科技公司一直都有在推进免费证书90天有效期的建议 ...