题解: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. Win32 SDK(四)Edit控件用法

    Win32 SDK(四)Edit控件用法 1获得控件句柄 HWND hEdit2 = ::GetDlgItem(hWnd, IDC_EDIT2); WINUSERAPI HWND WINAPI Get ...

  2. Managing Difficulties

    1 #include<bits/stdc++.h> 2 using namespace std; 3 #define FOR(i,n,m) for(int i=n;i<=m;i++) ...

  3. 6.13API接口服务类漏洞探针

    ip地址解析:www.x.x.x.com, 对应网站目录为d:/wwwroot/xiaodi/ 而127.x.x.x,对应网站目录为d:/wwwroot/,可能存在网站备份文件zip,所以ip网址端口 ...

  4. 推荐一款流量录制回放工具:jvm-sandbox-repeater

    在软件开发和测试过程中,我们经常会遇到需要对网络请求进行录制和回放的需求,以便进行调试.测试和分析.为了模拟真实的用户请求,我们通常会使用各种流量录制回放工具来记录并重放网络请求. 其中,jvm-sa ...

  5. SpringBoot 基于注解实现接口的代理Bean注入

    SpringBoot 基于注解实现接口的代理Bean注入 在springboot加载时需自己手动将接口的代理bean注入到spring容器中,这样在service层注入该接口类型即可, 1.在Spri ...

  6. GitHub Star 数量前 13 的自托管项目清单

    一个多月前,我们撰写并发布了这篇文章<终极自托管解决方案指南>.在那篇文章里我们深入探讨了云端服务与自托管方案的对比.自托管的潜在挑战.如何选择适合自托管解决方案,并深入介绍了五款涵盖不同 ...

  7. JS的可选链操作符(?.)与双问号(??),你用到了吗?

    可选链操作符(?.) 以前一般这样使用: let nestedProp = obj.first && obj.first.second; 或者这样: let temp = obj.fi ...

  8. Spring —— 注解开发(依赖注入)

    自动装配   引用类型         简单类型      加载properties文件      

  9. 多线程ExecutorService 的理解与使用

    原文链接:https://www.cnblogs.com/gxz-sw/p/6754476.html 接口 Java.util.concurrent.ExecutorService 表述了异步执行的机 ...

  10. [OI] 容斥原理拓展

    10.容斥原理拓展 10.1 二项式反演 \[P.10.1(1) \] 设 \(U=\{S_1,S_2,S_3...S_n\}\),且任意 \(i\) 个元素的交集都相等 定义 \(g(x)\) 为 ...