题解: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. [学习笔记]在不同项目中切换Node.js版本

    @ 目录 使用 Node Version Manager (NVM) 安装 NVM 使用 NVM 安装和切换 Node.js 版本 为项目指定 Node.js 版本 使用环境变量指定 Node.js ...

  2. WinForm UI 库

    WinForm UI库 HZH_Controls HZHControls是基于.Net Framework4.0原生控件开发完全开源的一套控件,你不需要担心有其他控件或版权问题.提供完整的示例代码,方 ...

  3. Windows SSH 免密登陆远程计算机

    上传公钥 如果远程计算机是类 Unix 系统,使用下面这条命令: Get-Content $Env:USERPROFILE\.ssh\id_rsa.pub | ssh USER@HOST " ...

  4. sicp每日一题[1.43]

    Exercise 1.43 If f is a numerical function and n is a positive integer, then we can form the nth rep ...

  5. bug记录|NON-STATIC METHOD CANNOT BE REFERENCED FROM A STATIC CONTEXT

    bug记录|NON-STATIC METHOD CANNOT BE REFERENCED FROM A STATIC CONTEXT   问题:原因:静态方法无法调用自己定义的非静态方法 解决方案:1 ...

  6. powershell 常用插件

    1. z 「z」这个 zsh 下常用的跳转工具,当频繁需要进入一个比较深的目录的时候,「z」这个插件会帮我们自动记录这个目录,之后我们只需要执行z [Directory]就可以快速跳转了 PowerS ...

  7. manim边学边做--通用多边形

    manim提供了通用多边形模块,可以绘制任意的多边形. 通用多边形模块有两种,Polygon和Polygram. Polygon是一个几何学术语,主要指的是由三条或三条以上的线段首尾顺次连接所组成的平 ...

  8. Angular Material 18+ 高级教程 – CDK Observers

    前言 Observers 是 Angular Material 对游览器原生 MutationObserver 的上层封装.主要用于监听 add/remove Node. 不熟悉的朋友可以先看这篇 D ...

  9. DOM & BOM – 大杂烩

    Document.scrollingElement 参考: why to use 'html, body' for scrollTop instead of just 'html' MDN 使用doc ...

  10. 新题速看!2021阿里、腾讯、字节都在问的SQL数据库笔试题及答案都给你整理好啦!

    ​    前  言 2021到了最后一个月份,年后肯定有蛮多小伙伴需要跳槽换工作,但对于年限稍短的软件测试工程师,难免会需要进行笔试,而在笔试中,基本都会碰到一道关于数据库的大题,今天这篇文章呢,就收 ...