题解: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. vscode注释快捷键

    单行注释 ctrl+/ 多行注释 ctrl+alt+a 文档注释 /** 复制上面一行 ctrl+d 选中段落整体向左或向右缩进 ctrl +[ 或 ctrl + ] 查找 ctrl + f

  2. AD(Active Directory )域的搭建与操作

    AD 域的搭建与操作 一.准备工作 准备好 VM 虚拟机和 Server 的安装包. 二.安装 Server 2022 选择标准且有图形界面的进行安装. 选择自定义安装方式. 为虚拟机 server2 ...

  3. 【Jenkins】Mac系统之忘记jenkins密码,如何修改密码

    参考文章<jenkins管理员密码登录不了> 一.修改config.xml文件 Mac下的文件在 /Users/xxx/.jenkins/users/登录的用户名/config.xml 复 ...

  4. 【Azure Policy】使用deployIfNotExists 把 Azure Activity logs 导出保存在Storage Account

    问题描述 使用Azure Policy,对订阅下的全部Activity Log配置Diagnostic Setting,要求: 在Subscription或Management Group级别,针对未 ...

  5. webpack笔记-webpack基础用法(二)

    webpack 本质上是一个打包工具,它会根据代码的内容解析模块依赖,帮助我们把多个模块的代码打包. 一切文件:JavaScript.CSS.SCSS.图片.模板,在 Webpack 眼中都是一个个模 ...

  6. DOM – ResizeObserver

    介绍 想监听一个 element 的 size changes 就可以使用 ResizeObserver 了. 在看这一篇之前, 建议先看看 DOM & BOM – IntersectionO ...

  7. CSS & JS Effect – Image 倒影框

    效果 Step1: HTML 结构 <div class="image"> <img src="./images/img-2.png" /&g ...

  8. ASP.NET Core C# 反射 & 表达式树 (第三篇)

    前言 前一篇讲完了反射, 这一篇来讲一下和反射息息相关的表达式树. 首先搞清楚 Delegate, Action, Func, Anonymous Method, Lambda, Expression ...

  9. Tomcat——配置、部署

    配置 修改启动端口号:conf/sever.xml          HTTP协议默认端口号为80,若将Tomcat端口号改为80,则将来访问Tomcat时,不用输入端口号          端口号改 ...

  10. Flutter将视频或图文分享到抖音

    如何在 Flutter 中分享视频到抖音 话不多说,先上效果: 原理 发布内容至抖音 H5 场景_移动/网站应用_抖音开放平台 (open-douyin.com) 本教程没有接入抖音原生 SDK 以及 ...