为什么我从ACAM做到了数位DP啊

考虑枚举前缀顶着最高位和后缀没有顶着的最高位。

考虑计算一个数对答案的贡献。统计 \(t\) 的出现次数记录到 \(c[t]\) 中。

贡献就是 \(\sum_{i=0}^{9}((\sum_{x=0}^{\sum_{j=i}^{9}c[j]-1}i\times10^{x})-(\sum_{x=0}^{\sum_{j=i+1}^{9}c[j]-1}i\times 10^{x}))\)。

\[(\sum_{i=0}^{9}i\times \sum_{x=0}^{\sum_{j=i}^{9}c[j]-1}10^{x})-(i\times\sum_{x=0}^{\sum_{j=i+1}^{9}c[j]-1}10^{x})
\]
\[((\sum_{i=0}^{9}i\times(10^{\sum_{j=i}^{9}c[j]}-1))-(\sum_{i=0}^{9}i\times(10^{\sum_{j=i+1}^{9}c[j]}-1)))\div 9
\]
\[((\sum_{i=0}^{9}i\times(10^{\sum_{j=i}^{9}c[j]}))-(\sum_{i=1}^{9}(i-1)\times(10^{\sum_{j=i}^{9}c[j]})))\div 9
\]
\[\sum_{i=1}^{9}10^{\sum_{j=i}^{9}c[j]}\div 9
\]

我们只需要计算左边那一车,最后除以 \(9\) 就好了。

然后我们注意到枚举前缀相当于强制你的 \(c[i]\) 不小于某个值。我们可以直接对 \(c\) 做后缀和。

因为只有 \(O(n)\) 个前缀需要被计算,而且 \(n\) 的范围支持 \(O(n^2)\),所以我们考虑 \(O(n)\) 算这个东西。

设 \(c\) 的后缀和数组为 \(t\),\(dp[c][n]\) 表示 \(t[c]=n\) 且只考虑了 \([0,c]\) 这几个数码的权值。

容易使用前缀和优化 DP 计算。最后取 \(\sum_{i=0}^{n}dp[9][i]\) 即可。

复杂度 \(O(10n^2)\)。

考虑复杂点儿的情况,计算 \(\sum i\times f(i)\) 而不是 \(\sum f(i)\)。

注意到我们只是给一个数带上了权值。

仍然考虑上述过程。假设固定前缀后枚举出来的后缀集合为 \(P\),枚举出来的前缀代表的数为 \(t\),那么我们计算的就是 \(\sum_{g\in P}(t+g)f(t+g)=\sum_{g\in P}t\times f(t+g)+g\times f(t+g)\)。

我们刚才计算的是 \(\sum_{g\in P}f(t+g)\),所以只需要考虑如何计算 \(\sum_{g\in P}g\times f(t+g)\) 即可。

仍然考虑对每一个 \(c\) 数组计算答案。带有幂的部分贡献和上面是一样的只需要将 \(10\) 替换成 \(B\),\(9\) 替换成 \(B-1\) 即可。考虑带有前面的 \(g\) 如何计算。

考虑计算每一种数码对答案的贡献。首先将其他 \(B-1\) 中数码全部看成同一种颜色,只需要再乘上一个组合数来补上系数即可。

剩下的部分,考虑枚举某个位置出现了 \(i\),然后剩下的部分随便乱填。

\[\sum_{x=0}^{n-1}\binom{n-1}{c[i]-1}i^x
\]
\[\binom{n-1}{c[i]-1}\frac{i^n-1}{i-1}
\]
\[\sum_{i=1}^{9}\binom{n-1}{c[i]-1}\binom{n-c[i]}{c[j](i\ne j)}\frac{i^n-1}{i-1}\sum_{i=1}^{9}10^{\sum_{j=i}^{9}c[j]}
\]
\[\binom{n-1}{c[i](i\in[0,9])}(\sum_{i=1}^{9}\frac{i^n-1}{i-1}c[i])(\sum_{i=1}^{9}10^{\sum_{j=i}^{9}c[j]})
\]

剩下的部分还不会,鸽了鸽了(

CF908G&LOJ6697口胡的更多相关文章

  1. Topcoder口胡记 SRM 562 Div 1 ~ SRM 599 Div 1

    据说做TC题有助于提高知识水平? :) 传送门:https://284914869.github.io/AEoj/index.html 转载请注明链接:http://www.cnblogs.com/B ...

  2. 口胡FFT现场(没准就听懂了)&&FFT学习笔记

    前言(不想听的可以跳到下面) OK.蒟蒻又来口胡了. 自从ZJOI2019上Day的数论课上的多项式听到懵逼了,所以我就下定决心要学好多项式.感觉自己以前学的多项式都是假的. 但是一直在咕咕,现在是中 ...

  3. BZOJ 口胡记录

    最近实在是懒的不想打代码...好像口胡也算一种训练,那就口胡把. BZOJ 2243 染色(树链剖分) 首先树链剖分,然后记录下每个区间的左右端点颜色和当前区间的颜色段.再对每个节点维护一个tag标记 ...

  4. Atcoder/Topcoder 口胡记录

    Atcoder/Topcoder 理论 AC Atcoder的❌游戏示范 兴致勃勃地打开一场 AGC 看 A 题,先 WA 一发,然后花了一年时间 Fix. 看 B 题,啥玩意?这能求? 睡觉觉. e ...

  5. NOIP2016考前做题(口胡)记录

    NOIP以前可能会持续更新 写在前面 NOIP好像马上就要到了,感觉在校内训练里面经常被虐有一种要滚粗的感觉(雾.不管是普及组还是提高组,我都参加了好几年了,结果一个省一都没有,今年如果还没有的话感觉 ...

  6. 关于有向图走“无限次”后求概率/期望的口胡/【题解】HNCPC2019H 有向图

    关于有向图走"无限次"后求概率/期望的口胡/[题解]HNCPC2019H 有向图 全是口胡 假了不管 讨论的都是图\(G=(V,E),|V|=n,|E|=m\)上的情况 " ...

  7. 「口胡题解」「CF965D」Single-use Stones

    目录 题目 口胡题解 题目 有许多的青蛙要过河,可惜的是,青蛙根本跳不过河,他们最远只能跳 \(L\) 单位长度,而河宽 \(W\) 单位长度. 在河面上有一些石头,距离 \(i\) 远的地方有 \( ...

  8. PKUSC 2022 口胡题解

    \(PKUSC\ 2022\)口胡题解 为了更好的在考试中拿分,我准备学习基础日麻知识(为什么每年都考麻将 啊啊啊) 首先\(STO\)吉老师\(ORZ,\)真的学到了好多 观察标签发现,这套题覆盖知 ...

  9. NOIP 口胡

    因为没准备啥东西 这两天口胡一下近年 NOIP 的题 大概会一道不落?没什么很寄的考点主要是 2021 T1 报数 打一个 \(O(\log n)\) 查询 \(n\) 中是否有 \(7\),打一个类 ...

随机推荐

  1. HOOK API(三) —— HOOK 所有程序的 MessageBox

    转载来源:https://www.cnblogs.com/hookjc/ 0x00 前言 本实例要实现HOOK MessageBox,包括MessageBoxA和MessageBoxW,其实现细节与H ...

  2. Java中命名Dao、Bean、conn等包的含义(不定期补充)

    感谢大佬:https://blog.csdn.net/j904538808/article/details/78904732 (1)DAO是Data Access Object数据访问接口.数据访问: ...

  3. sublime中的emmet插件的使用技巧

    1.我要生成一个2行3列,宽300px,高500px的表. table[width=300 height=500]>(tr>td{$}*3)*2

  4. 分布式消息队列RocketMQ(一)安装与启动

    分布式消息队列RocketMQ 一.RocketMQ简介 RocketMQ(火箭MQ) 出自于阿里,后开源给apache成为apache的顶级开源项目之一,顶住了淘宝10年的 双11压力 是电商产品的 ...

  5. Java中Arrays数组工具类的使用全解

    本文几乎涵盖了所有的Arrays工具类(基于Java 11)的方法以及使用用例,一站式带你了解Arrays类的用法,希望对大家有帮助. 码字不易,三连支持一下吧 Arrays数组工具类 方法一览表 快 ...

  6. Solution -「多校联训」光影交错

    \(\mathcal{Description}\)   Link.   一个游戏包含若干次卡牌抽取,每次以 \(p_l\) 的概率得到 \(+1\),\(p_d\) 的概率得到 \(-1\),否则得到 ...

  7. 我们一起来学grep

    文章目录 grep 介绍 grep 命令格式 grep 命令选项 grep 实例 查找指定进程 查找指定进程个数 从文件中读取关键词进行搜索 从多个文件中查找关键字 输出以u开头的行 输出非u开头的行 ...

  8. suse 12 二进制部署 Kubernetets 1.19.7 - 第07章 - 部署kube-controller-manager组件

    文章目录 1.7.部署kube-controller-manager 1.7.0.创建kube-controller-manager请求证书 1.7.1.生成kube-controller-manag ...

  9. 『无为则无心』Python基础 — 44、对文件和文件夹的操作

    目录 1.os模块介绍 2.查看os模块相关文档 3.os模块常用方法 (1)文件重命名 (2)删除文件 (3)创建文件夹 (4)删除文件夹 (5)获取当前目录 (6)改变默认目录 (7)获取目录列表 ...

  10. [LeetCode]1431. 拥有最多糖果的孩子

    给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目. 对每一个孩子,检查是否存在一种方案,将额外的 extraCandi ...