AT做题记录3

特别鸣谢

介于本人才疏学浅,有些题参考了一些大佬题解,在此提出感谢(排名不分前后):
https://blog.csdn.net/write_1m_lines/article/details/118545542 作者:@GoodCoder666

ABC205D - Kth Excluded(*713)

Problem

给出 \(n\) 个数 \(a_i\)\(q\) 次询问,每次问除了这些数的第 \(k\) 大的正整数是什么。

Solution

注意到题目已经将 \(a_i\) 排好序,所以直接记 \(sum_i\) 表示 \(a_i-a_{i-1}\) 的前缀和,每次在 \(sum_i\) 里二分 \(k\),即可算出第 \(k\) 大数在 \(a_w\)\(a_{w+1}\) 之间,进而可得出答案。

ABC205E - White and Black Balls(*2025)

Problem

给出 \(n\) 个白球,\(m\) 个黑球以及一个常数 \(k\),问你有多少种排列方式使得 \(\forall i\in[1,n+m],w_i\le b_i+k\),其中 \(w_i\) 表示在排列的第 \(i\) 个球以及它之前的白球个数,\(b_i\) 表示在排列的第 \(i\) 个球以及它之前的黑球个数。

答案与 \(10^9+7\) 取模。

Solution

考虑 dp,不妨设 \(f_{i,j}\) 表示用了 \(i\) 个白球和 \(j\) 个黑球满足条件的方案数,很明显有

\[f_{i,j}=f_{i,j-1}+f_{i-1,j}*[i\le j+k] \]

即在原先的基础上增加黑球一定符合条件,但增加白球不一定。

时间复杂度为 \(O(n^2)\) 无法 AC,考虑优化。

直接优化并没有什么办法,注意观察递推式,\((i,j)\) 都是从 \((i,j-1)\)\((i-1,j)\) 转移过来的,所以可以把题目转化为从 $(0,0) $ 到 \((n,m)\) 的方案数(\(x\) 代表 \(w_i\)\(y\) 代表 \(b_i\)),但不能经过直线 \(y=x+k\),如下图:

https://cdn.luogu.com.cn/upload/image_hosting/u523ey03.png?x-oss-process=image/resize,m_lfit,h_500,w_1000

黑色的方案是合法的,但红色的方案不合法。

考虑做点 \((0,0)\) 关于 \(y=x+k+1\) 的对称点 \((-k-1,k+1)\),那么从 \((-k-1,k+1)\)\((n,m)\) 的每种方案都对应着一条从 \((0,0)\)\((n,m)\) 且经过直线 \(y=x+k\) ,没有重复和遗漏的,如下图:

https://cdn.luogu.com.cn/upload/image_hosting/xa6jdxjm.png?x-oss-process=image/resize,m_lfit,h_170,w_225

注意到是可以碰到 \(y=x+k\) 这一条直线的(即 \(w_i=b_i+k\)),所以只有碰到 \(y=x+k+1\) 才算不合法,所以做关于 \(y=x+k+1\) 的对称点。

\((0,0)\)\((n,m)\) 的方案数为 \(\dbinom{n+m}{m}\) ,所以答案为 \(\dbinom{n+m}{m}-\dbinom{n+m}{m+k+1}\) 直接逆元求解即可。

posted @ 2022-07-15 18:57  xiaoPanda  阅读(90)  评论(0)    收藏  举报