计数学习小记

前言

闲的无聊懒得做题不如来水点博客。

虽然一直作为一个感性做题的选手,但是理性层面上确实是分析题目初步做法的一个十分重要的方法。

额不会涉及具体的知识点,只是总结点自己做题的时候遇到的比较巧妙的方法。

混沌排版请见谅

还有我也很菜有错误或者不完善的地方见谅/kk

(Polya以后再更新)

文章目录


正题


基本方法

计数的基本方法来说的话大致能总结为几类

  • dp
  • 组合数学
  • 多项式
  • 其他

dpdpdp应该是比较早接触也是花样最多的一类方法,一般需要考虑到状态的设立和优化,方程的转移等部分。

组合数学的话主要通过找出题目的组合意义或者推式子得到。

而多项式一般都是需要使用生成函数,也有可能是简单的卷积。

然而除了上面常见的计数,存在一些其他灵活性的方法,这类的题目一般都能够将整体的计数问题分散到一些小的统计上:比如说SAM进行子串计数的过程。

当然也有可能是假计数(比如实际上可能合法的方案数能够枚举完的)。

不过这里不会赘述上面的几种方法,因为这只是个总结经验的水博客,不是教人计数的博客。


不重

重复问题应该是在正常的计数中最容易遇到的问题,统计重复的方案对做法造成的影响很大,比如来说:

  • 无标号计数:这种一般来说这种是很难的问题,因为一般的计数都需要有一个基准,而这很经常是标号。
  • 统计的不是形成方案的方法,而是方案:很多的生成方法是会生成重复的方案的,当然这个生成方法可能是你自己决定的或者题目给出的。

比较常见的应该就这两种情况了,当我们的计数出现重复的时候就需要考虑换方法来去掉重复或者不计重复的部分。

容斥

啊又是一个很大的专题,当然容斥是有两种作用的,一种是来去掉重复,一种是保证限制的合法。

比如经典的错排问题:
我们可以枚举我们至少有多少个位置是不合法的(设为kkk个),那么不合法的位置就固定了,答案就是
∑k=1n(nk)(−1)k(n−k)!\sum_{k=1}^n\binom{n}{k}(-1)^k(n-k)!k=1n(kn)(1)k(nk)!
不难发现容斥的一个好处是我们不需要去统计恰好,而是去固定一些至少,这样可以去掉一些麻烦的限制,这是一个很常见的用处。

容斥还有一个好处是我们的容斥系数可以直接乘在方案中以节省很多的状态(dpdpdp来说)。

比如以题目[ARC101C] Ribbons on Tree来说:

nnn个点之间两两配对,要求配对点之间的路径覆盖整棵树,求方案数对109+710^9+7109+7取模
1≤n≤50001\leq n\leq 50001n5000

额看看我们的限制,每条边都被覆盖至少一次,那么我们容斥来说就是如果钦定kkk条边不能被覆盖,容斥系数就是(−1)k(-1)^k(1)k
我们暴力切断不需要覆盖的边,那么设fi,j,kf_{i,j,k}fi,j,k表示以iii为根的子树中目前联通块大小为jjj,已经切断了kkk条边时的方案。
显然的切断一条边的时候容斥系数成了个−1-11,那么我们完全没有必要用状态记录它,而是直接维护目前的方案×容斥系数的和状态就缩成两维了。

至于很多的反演我认为这不需要在此篇中过多介绍。


寻找基准

基准是一个计数中不可或缺的东西。

拿最简单的过河卒问题来讲,我们询问的兵的路线数量实际上是一个绝对的空间和时间(也就是走的顺序)的路径。

如果问题可以变为询问过河卒的路径能有多少种不同的形状(旋转或者镜像得到的也算重复),那么就是去掉了部分的基准。

而有的问题中基准并不会明显的给出,所以可能正常的计数会导致大量的重漏,此时我们需要寻找一个好的基准来计数。

拿无标号有根数的计数来讲,我们不会算重的原理就是说我们将所有的子树按照一定的规律进行了排序,此时就是确定了一个基准。

例题的话可以看P7888。


模型转换

一个很大的话题,大部分的难的计数题都是会有一些十分复杂的条件的,需要找到一个比较简单的条件来替换掉原来的条件。

当然的变换之后不可避免地会有按照新的条件来计的话算重的可能性,此时就需要具体分析了。

奇偶染色

比如[AGC040C]Neither AB nor BA:

一个包含A,B,CA,B,CA,B,C的序列,每次可以选择相邻的两个除了ABABABBABABA的删去。
求有多少个长度为NNN的序列可以删完。
1≤N≤1071\leq N\leq 10^71N107

经典的奇偶染色,把偶数位置的取反就变为了删除AA/BBAA/BBAA/BB然后就很好统计了。

组合数→\rightarrow矩阵乘法

最经典的应该是https://www.luogu.com.cn/problem/P3746


(∑i=0∞(nkik+r))%p\left(\sum_{i=0}^\infty \binom{nk}{ik+r}\right)\% p(i=0(ik+rnk))%p
1≤n≤109,0≤r<k≤501\leq n\leq 10^9,0\leq r<k\leq 501n109,0r<k50

其实就是在nknknk个物品中选出xxx个物品,要求x%k=rx\%k=rx%k=r,直接矩阵乘法即可。

而大部分问题可以将组合意义和dp相互转换来转换成快速的矩阵乘法。

期望X计数

有限的期望题都是计数
−\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -                                  不是我就对了

但是有时候运用期望的思想会让问题更加的简单。

当然一般这种时候正常的计数也是可行的,只不过一般来说在每一步的总方案数不确定但是概率能确定的情况下我们不妨先算出期望再乘上总共的方案数就能得到答案。

原本有道例题的,但是找不到了/cy

幂次

有时候我们会需要统计答案幂次的和,假设是nkn^knk,我们可以将转换为在nnn个数中选出有序可重的kkk个数,此时我们就将一个幂次的问题转换为了一个较为复杂的计数。

如[NOI2009]管道取珠

给出一个大小为nnn和一个大小为mmm的栈,每次选择一个栈弹出栈顶然后记录这个字母,求所有弹出序列的弹出方案的二次方和。
1≤n,m≤5001\leq n,m\leq 5001n,m500

方案的平方可以视为两个人选出同一个序列的方案。
然后dpdpdp转移即可。


统计

有的时候计数题不仅需要统计方案数,而是每个方案下某个值的和。

此时我们一般有以下解决方案

  • 使用dpdpdp统计:考虑方程是否会存在让某个状态的所有方案的加值的情况,那么此时需要额外记录一个方案数的数组。
  • 组合意义考虑:比如上面的幂次小结中便是用组合意义转化为了一般计数题。
  • 单独考虑单个东西产生的贡献。

好题

不知道写啥了记些好题罢

  • P6499-[COCI2016-2017#2]Burza
  • 51nod1667-概率好题
  • 51nod1597-有限背包计数问题
  • [AGC013E]Placing Squares
  • CF1286D-LCC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[dsu on tree]树上启发式合并总结(算法思想及模板附例题练习)

文章目录前言树上启发式合并引入算法思想时间复杂度模板练习例题&#xff1a;CF600E Lomsat gelralsolutioncodeCF208E Blood CousinssolutioncodeCF570D Tree RequestssolutioncodeCF1009F Dominant Indicessolutioncode前言 最近不是在⛏李超树嘛&#xff0c;然后就去玩了下…

F Christmas Game

F Christmas Game 题意&#xff1a; 给一棵n个节点树&#xff0c;每个点上都有权值&#xff0c;两个人轮流操作&#xff0c;每次可以将一个点的权值给他的父亲节点&#xff0c;&#xff08;父亲节点与当前点的深度差必须为k&#xff09;&#xff0c;当有一方不能操作时即为输…

领域驱动设计,让程序员心中有码(七)

领域驱动设计- 让程序员心中有码&#xff08;七&#xff09;-设计原则和设计模式&#xff0c;互联网开发者们共同的追求前言多年来&#xff0c;笔者一直从事传统软件企业的软件开发和项目管理工作。笔者发现在众多的传统软件企业中&#xff0c;评判优秀开发者的标准往往是技能的…

codeforces:CF750 复盘

总结 solve 4 rnk:833 我变成小学生(pupil)啦&#xff01; 这次看完题解感觉D和F其实都挺可做的 还是思维的问题 A 签到题 判断加起来是奇数还是偶数即可 但我做的分类讨论就很恶心qwq 因为我没看到a、b、c都至少是1&#xff01; 所以我还在辛苦的分类讨论qwq 只能说我分类讨…

UOJ#351-新年的叶子【树的直径,数学期望】

正题 题目链接:https://uoj.ac/problem/351 题目大意 给出nnn个点的一棵树&#xff0c;开始所有点都是白色&#xff0c;每次随机点黑一个叶子&#xff08;可以重复点&#xff09;&#xff0c;求期望多少次能使得白色点构成的图直径发生变化。 答案对998244353998244353998244…

cf1504. Travelling Salesman Problem

cf1504. Travelling Salesman Problem 题意&#xff1a; n个城市&#xff0c;编号1~n&#xff0c;每个城市有美丽值a[i]&#xff0c;现在要从城市1出发&#xff0c;其他所有城市走一遍&#xff0c;最后回到城市1&#xff0c;城市i到j的花费为max(ci,aj-ai)&#xff0c;ci为第…

[NOIP-S 2020]游记(附考前注意事项)

呜呼起飞T1&#xff1a;排水系统T2&#xff1a;字符串匹配T3&#xff1a;移球游戏T4&#xff1a;微信步数总述考前注意事项T1&#xff1a;排水系统 嗯—— 怎么说呢&#xff1f;&#xff1f; 比赛开始后迅速通读三遍题 顶着第一题肯定是打卡题的心态 哪怕是恶心模拟也得上&…

模板:二维线段树(线段树套线段树)

文章目录问题解析单点修改询问完整代码标记永久化代码所谓二维线段树&#xff0c;就是有两个维度的线段树 (逃) 问题 给出一个矩形 要求支持以下操作&#xff1a; 1.询问一个子矩形的最值 2.修改某一个单点的值 解析 使用线段树套线段树&#xff0c;来解决二维动态问题 注意…

程序猿修仙之路--数据结构之你是否真的懂数组?

数据结构但凡IT江湖侠士&#xff0c;算法与数据结构为必修之课。早有前辈已经明确指出&#xff1a;程序算法数据结构 。要想在之后的江湖历练中通关&#xff0c;数据结构必不可少。数据结构与算法相辅相成&#xff0c;亦是阴阳互补之法。开篇说道数组&#xff0c;几乎每个IT江…

P5643-[PKUWC2018]随机游走【min-max容斥,dp】

正题 题目链接:https://www.luogu.com.cn/problem/P5643 题目大意 给出nnn个点的一棵树&#xff0c;一个人从点xxx开始随机游走&#xff0c;然后QQQ次询问给出一个点集SSS&#xff0c;求期望多少步这个人会经过这个点集中的所有点。 1≤n≤18,1≤Q≤50001\leq n\leq 18,1\leq…

Rolling The Polygon Gym - 102222B

Rolling The Polygon Gym - 102222B 题意&#xff1a; 给你一个多边形&#xff0c;给你内部一个点Q&#xff0c;多边形在平面上滚动一周&#xff08;当有一个边第二次触地滚动停止&#xff09;&#xff0c;问Q的轨迹长度 题解&#xff1a; 计算几何题目 自己一直不是很擅长…

[杂题训练]CF1228E Another Filling the Grid(容斥),CF936C Lock Puzzle(构造)

文章目录T1&#xff1a;CF1228E Another Filling the GridsolutioncodeT2&#xff1a;CF936C Lock PuzzlesolutioncodeT1&#xff1a;CF1228E Another Filling the Grid 点我 solution 反过来思考&#xff0c;用所有方案数➖不合法方案数 很容易想到的是——容斥&#xff01…

Asp.Net Core 轻松学-经常使用异步的你,可能需要看看这个文章

前言事情的起因是由于一段简单的数据库连接代码引起&#xff0c;这段代码从语法上看&#xff0c;是没有任何问题&#xff1b;但是就是莫名其妙的报错了&#xff0c;这段代码极其简单&#xff0c;就是打开数据库连接&#xff0c;读取一条记录&#xff0c;然后立即更新到数据库中…

CF1146F: Leaf Partition(树形dp)

解析 阴间dp题qwq 不难设计dp&#xff1a; dpx,0:x节点没有被包含、子树内的方案数dp_{x,0}:x节点没有被包含、子树内的方案数dpx,0​:x节点没有被包含、子树内的方案数 dpx,1:x节点被包含、子树内的方案数dp_{x,1}:x节点被包含、子树内的方案数dpx,1​:x节点被包含、子树内的…

Take Your Seat Gym - 102222D

Take Your Seat Gym - 102222D 题意&#xff1a; 第一次是n个人坐飞机&#xff0c;按照1到n的顺序登机&#xff0c;第一个人登机牌丢了&#xff0c;他随机做一个座位&#xff0c;2到n个人上来按照自己的登机牌坐座位&#xff0c;如果他的座位被坐了&#xff0c;就在随机找一个…

CF446D-DZY Loves Games【高斯消元,矩阵乘法】

正题 题目链接:https://www.luogu.com.cn/problem/CF446D 题目大意 给出nnn个点mmm条边的一张无向图&#xff0c;一些点有陷阱&#xff0c;走到时会损失一条生命&#xff0c;总共有kkk条生命&#xff0c;求从111出发随机游走到nnn没有死亡且到终点时仅剩一条命的概率。 1≤n≤…

「BJOI2019」奥术神杖(AC自动机+DP)

文章目录titlesolutioncodetitle solution 令MagicViVjVk...MagicV_i\times V_j\times V_k...MagicVi​Vj​Vk​... 这里对Magicc\sqrt[c]{Magic}cMagic​有一个很巧妙的转换——取对数 Magicc(Magic)1celoge(Magic)1c\sqrt[c]{Magic}(Magic)^{\frac{1}{c}}e^{log_e(Magic)^{…

try.dot.net 的正确使用姿势

来源&#xff1a;https://www.cnblogs.com/7tiny/p/10277600.html【简介】微软官方前不久发布了 try.dot.net 这个有趣的网址&#xff0c;开始只是图个新鲜看了一下&#xff0c;后面通过自身实践过后&#xff0c;发现这着实算是个“有趣”的站点&#xff01;首先我们大概地列举…

A - TOYS POJ - 2318

A - TOYS POJ - 2318 题意&#xff1a; 一个盒子中有n个隔板&#xff0c;分出n1个空间&#xff08;从左往右空间的编号分别是0…n&#xff09;&#xff0c;&#xff08;隔板之间不会相交&#xff0c;且按照从左往右的顺序给出&#xff09;&#xff0c;现在给你m个坐标的物品&…

CF1016F:Road Projects(树形dp)

解析 好题 意思就是我没做出来 稍微分析一下就可以发现加边的位置始终是一样的 换句话说询问完全可以O1 关键就是找到这条边加在哪里 一开始我完全把这道题看成了彻头彻尾的数据结构题 容易想到二分答案 然后上个树状树组搞一搞就行了 但是遇到一个关键的问题 它无法解决加边…