首页 > 其他分享 >CF1808E3 题解

CF1808E3 题解

时间:2023-06-03 17:13:35浏览次数:56  
标签:CF1808E3 begin 题解 sum nx binom aligned equiv

题意

传送门

求有多少包含 \(n\) 位数码的 \(k\) 进制数,满足存在一位数等于其他 \(n-1\) 位数的总和模 \(k\)。

\(1\le n\le 10^{18},1\le k\le 2000\)。

题解

简单的组合数学都不会了……蔬菜越来越多,我该怎么办?

条件等价于存在某一位 \(x\),满足 \(2x\equiv s\pmod k\)。容易想到一个 \(O(nk^3)\) 的数位 \(\text{DP}\) 做法,即钦定 \(s\),然后计数不存在 \(x\) 的方案数。但 \(n\) 和 \(k\) 的范围都很大,用矩阵快速幂等方式优化没有前途。考虑组合计数。

如果 \(k\) 为奇数,则 \(x\) 与 \(s\) 是一一对应的。先考虑这种情况。

每一位都可以取 \([0,k)\) 中任意一个数,这产生了一个很好的性质:如果一位一位填数,最后一位可以将任意 \(s\) 变为任意想要的结果。

这启发我们使用二项式反演。先钦定 \(s\)。设 \(f_i\) 表示有恰好 \(i\) 位为 \(x\) 的方案数,\(g_i\) 表示钦定 \(i\) 位为 \(x\),剩下随意放的方案数。则易得

\[\begin{aligned} g_i&=\left\{ \begin{aligned} &\binom{n}{i}k^{n-i-1}& &(i<n)\\ &[nx\equiv s]& &(i=n) \end{aligned} \right.\\ f_i&=\sum_{j=i}^n(-1)^{j-i}\binom{j}{i}g_j \end{aligned} \]

我们要对所有 \(s\),求 \(f_0\) 之和,最后用总方案数减去即为答案。因为 \(g_n\) 特殊,所以提出来单独考虑。稍微化一下

\[\begin{aligned} f_0&=\sum_{i=0}^{n-1}(-1)^i\binom{n}{i}k^{n-i-1}+(-1)^ng_n\\ &=\sum_{i=0}^n(-1)^i\binom{n}{i}k^{n-i-1}-(-1)^nk^{-1}+(-1)^ng_n\\ &=k^{-1}(\sum_{i=0}^n(-1)^{n-i}\binom{n}{i}k^i-(-1)^n)+(-1)^ng_n \end{aligned} \]

上式中的 \(k^i\) 很适合二项式反演。反演得

\[f_0=k^{-1}((k-1)^n-(-1)^n)+(-1)^ng_n \]

完成。预处理后复杂度 \(O(\log n+k)\)。

还有一部分是 \(k\) 为偶数的情况。此时 \(s\) 为奇数显然没有方案,偶数则有两个 \(x\) 与之对应。则改写上式为

\[\begin{aligned} g_i=\left\{ \begin{aligned} &\binom{n}{i}2^ik^{n-i-1}& &(i<n)\\ &\sum_{j=0}^n\binom{n}{j}[jx_1+(n-j)x_2\equiv s]& &(i=n) \end{aligned} \right. \end{aligned} \]

小于 \(n\) 的部分如上化简即可。接下来考虑如何快速求 \(g_n\)。

因为 \(x_1=\frac{s+k}{2},x_2=\frac{s}{2}\),所以化为 \(j(x_1-x_2)\equiv s-nx_2\),即 \(j\cdot\frac{k}{2}\equiv s-nx_2\pmod k\)。右边为定值。左边只和 \(j\) 的奇偶性有关。

因为 \(\sum\limits_{i\equiv0\pmod2}\dbinom{n}{i}=\sum\limits_{i\equiv1\pmod2}\dbinom{n}{i}=2^{n-1}\),所以 \(g_n=2^{n-1}[(s-nx_2\equiv0)\vee(s-nx_2\equiv\frac{k}{2})]\)。于是此题得解。

标签:CF1808E3,begin,题解,sum,nx,binom,aligned,equiv
From: https://www.cnblogs.com/fish07/p/17454236.html

相关文章

  • P1545 [USACO04DEC] Dividing the Path G 题解
    丢一发好理解又好写的线段树优化dp。题目传送门简要题意给定一个长为\(l\)的线段,求出尽量少的不相交区间覆盖整段线段,要求题目给的所有子区间只被\(1\)个区间覆盖。分析显然题目给的子区间\([s,e]\)中只有\(s\)和\(e\)端点能作为线段端点,所以我们应该给\([s+1,......
  • 【Pytorch】ValueError: not enough values to unpack (expected 2, got 1)问题解决
    在运行开源项目时出现了这个问题,网上很多说删回车或者都改成英文符号,但是我都试了,没用后来自己摸索出的方法是:先更改数据集的格式,之前分隔符是\t,把数据集中的分隔符改成空格,再把语句中的\t也换成空格,然后就不会报错了。改前:改后:......
  • python pip安装库时遇到fatal error的问题解决
    当时的图片没有留,写点东西做备忘吧。一开始尝试pipinstallxx库,cmd提示pip不是批处理文件或命令,解决方法:去属性的高级设置里,在用户变量的Path里增加pip所在的路径,如果不知道pip在哪里,就在cmd里输入wherepip查询,查不到就在文件管理里用查询。解决这个问题后,再尝试安装,错误提示......
  • 杂项题解
    JOISC2017_JAbduction2由于权值较高的路不会被权值较低的路线影响,所以首先考虑将\(h+w\)条边按照权值降序排序,再考虑应该的最优决策方案。注意到每一条路都横跨原始的矩形,这样以出发点为中心向上下左右发散就会有4条边构成一个小矩形。考虑维护这个矩形每条边的最大路径......
  • [ROI 2018] Innophone 题解
    [ROI2018]Innophone看了半天网上仅有的一篇题解……才堪堪写出来不过在LOJ上看提交,全是KTT,看得我瑟瑟发抖(不会题意翻译在平面上有一些点,你需要在这个平面上任意确定一个点(不要求是给定的点),定义其贡献为横坐标\(\times\)其右侧的点\(+\)纵坐标\(\times\)其左上方的......
  • docker apt-get update失败问题解决
    一、问题描述docker容器相当于linux系统的精简版,内部很多指令是无法直接使用的,例如vim指令,为了使用vim指令,我们需要进入容器内部进行安装,安装步骤为:apt-getupdateapt-getinstallvim很多时候我们发现安装会失败,这里是由于下载源问题。二、解决方案1.进入宿主机下cd/e......
  • 问题解决:Ubuntu18.04显示器分辨率不正常
    在Ubuntu18.04下出现显示器分辨率不正确的情况,只能选择1024x768的分辨率,没有其它选项,显示器本身可以支持1920x1080的分辨率。经查询,采用cvt,xrandr的方法不成功,显示xrandr:Failedtogetsizeofgammaforoutputdefault的错误,采用修改grub的方法如下解决方法修改/etc/defaul......
  • k8s问题解决 - 删除命名空间长时间处于terminating状态
    一行命令解决,注意替换两处待删命名空间字样kubectlgetnamespace"待删命名空间"-ojson\|tr-d"\n"|sed"s/\"finalizers\":\[[^]]\+\]/\"finalizers\":[]/"\|kubectlreplace--raw/api/v1/namespaces/待删命名空间/finali......
  • [WC/CTS2023] 树据结构 题解
    题目描述作为一个熟练的OI选手,你对数据结构的各种题型早已轻车熟路,比赛中只要碰到数据结构题就能三下五除二轻松搞定。这一天,你翻开OJ,看到了这道题:给定\(n\)个点的有根树,点编号为\(1,2,\dots,n\),\(1\)为根。每条边上有一个\(1\)至\(n-1\)的两两不同的权值。维护......
  • Razor Pages本地IIS服务器部署流程及部分问题解决方法
     记录一下自己在本地IIS服务器部署的基本流程:添加IIS服务器控制面板>>程序和功能 启用或关闭windows功能>>勾选相关功能   网站部署将项目发布(publish)至本地文件夹:在包含.sln文件的目录下打开终端,输入dotnetpublish-cdebug--no-self-contained......