随笔分类 - 数学 计数(排列组合/卡特兰数/容斥)
摘要:【题目】 " 6395. 「THUPC2018」城市地铁规划 / City" 【题意】给定n个点要求构造一棵树,每个点的价值是一个关于点度的k次多项式,系数均为给定的$a_0,...a_k$,求最大价值。$n \leq 3000,k \leq 10$。 【算法】背包DP+Prufer序 首先每个点度
阅读全文
摘要:【题目】 "BZOJ 2111" 【题意】求有多少1~n的排列,满足$A_i A_{\frac{i}{2}}$,输出对p取模的结果。$n \leq 10^6,p \leq 10^9$,p是素数。 【算法】计数DP+排列组合+lucas 【题解】令i的父亲为i/2,转化为要求给一棵n个点的完全二叉树编
阅读全文
摘要:【题目】F - Many Easy Problems 【题意】给定n个点的树,定义S为大小为k的点集,则f(S)为最小的包含点集S的连通块大小,求k=1~n时的所有点集f(S)的和取模924844033。n<=2*10^5。 【算法】排列组合+NTT 【题解】考虑每个点只会在k个点都在其一个子树时无
阅读全文
摘要:【题意】n位同学(其中一位是B神),m门必修课,每门必修课的分数是[1,Ui]。B神碾压了k位同学(所有课分数<=B神),且第x门课有rx-1位同学的分数高于B神,求满足条件的分数情况数。当有一位同学的一门必修课分数不同时视为两种情况不同。n,m<=100,Ui<=10^9。 【算法】计数DP+排列
阅读全文
摘要:【题目】G. Partitions 【题意】n个数$w_i$,每个非空子集S的价值是$W(S)=|S|\sum_{i\in S}w_i$,一种划分方案的价值是所有非空子集的价值和,求所有划分成k个非空子集的方案的价值和。1<=k<=n<=2*10^5,1<=wi<=10^9。 【算法】斯特林数 【题
阅读全文
摘要:【题目】E. Team Work 【题意】给定n和k,n个人中选择一个大小为x非空子集的代价是x^k,求所有非空子集的代价和%1e9+7。n<=10^9,k<=5000。 【算法】斯特林反演 【题解】枚举非空子集大小,则题目要求: $$ans=\sum_{i=1}^{n}\binom{n}{i}i^
阅读全文
摘要:【题目】H. Ember and Storm's Tree Game 【题意】Zsnuoの博客 【算法】动态规划+排列组合 【题解】题目本身其实并不难,但是大量干扰因素让题目显得很神秘。 参考:Zsnuoの博客 一、首先Ember必胜(考虑n个点连成一条链),故合法的树一定满足先手必胜。当Storm
阅读全文
摘要:【题目】C. Maximum Element 【题意】给定n和k,定义一个排列是好的当且仅当存在一个位置i,满足对于所有的j=[1,i-1]&&[i+1,i+k]有a[i]>a[j],求长度为n的好的排列数。n<=10^6。 【算法】排列组合+动态规划 【题解】设D(n)表示长度为n且满足a[n]=
阅读全文
摘要:【题意】给定a和b,求满足a<=lcm(x,y)<=b && x<y的数对(x,y)个数。a,b<=10^11。 【算法】莫比乌斯反演+组合计数 【题解】★具体推导过程参考:51nod1222 最小公倍数计数 过程运用到的技巧: 1.将所有i和j的已知因子提取出来压缩上届。 2.将带有μ(k)的k提
阅读全文
摘要:【题意】给定n,求Σi=0~nΣj=1~i s(i,j)*2^j*j!,n<=10^5。 【算法】生成函数+排列组合+多项式求逆 【题解】参考: [BZOJ4555][Tjoi2016&Heoi2016]求和-NTT-多项式求逆 $ans=\sum_{i=0}^{n}\sum_{j=0}^{i}s(
阅读全文
摘要:Catalan数列:1 1 1 2 5 14 42 132 429 1430 4862 16796 【计数映射思想】 参考:卡特兰数 — 计数的映射方法的伟大胜利 计数映射:将难以统计的数映射为另一种形式的可以统计的数。 一、入栈出栈序 n个数字,有多少种合法的入栈出栈序列?n=3时的合法序列之一:
阅读全文
摘要:【题目】E. New Year and Entity Enumeration 【题意】给定集合T包含n个m长二进制数,要求包含集合T且满足以下条件的集合S数:长度<=m,非和与的结果都在集合中。(详细的题意见原题) 【算法】数学(贝尔数) 【题解】这道题确实不太能理解这种做法,所以就简单写写了。 先
阅读全文
摘要:【题意】给定n个点的无向完全图,有n-1个公司各自分管一部分路,要求所有公司都有修路的生成树数。n<=17。 【算法】容斥原理+生成树计数(矩阵树定理) 【题解】每个生成树方案是一个公司有无修路的01排列,定义集合x为公司x有修路的方案集合,则题目要求集合交。 对于若干集合的集合并补集,即x个公司不
阅读全文
摘要:【题目】E. Present for Vitalik the Philatelist 【题意】给定n个数字,定义一种合法方案为选择一个数字Aa,选择另外一些数字Abi,令g=gcd(Ab1...Abx),要求满足g≠1且gcd(Aa,g)=1,求方案数取模1e9+7。2<=n<=5*10^5,2<=
阅读全文
摘要:【容斥原理】 对于统计指定排列方案数的问题,一个方案是空间中的一个元素。 定义集合x是满足排列中第x个数的限定条件的方案集合,设排列长度为S,则一共S个集合。 容斥原理的本质是考虑[集合交 或 集合交的补集]和[集合并 或 集合并的补集]之间相互转化的问题。 定义目标函数为f(m),已知函数g(T)
阅读全文
摘要:【题目】C. Superior Periodic Subarrays 【题意】给定循环节长度为n的无限循环数列,定义(l,s)表示起点为l的长度为s的子串,(l,s)合法要求将子串从该起点开始以s为循环节长度无限循环中每个数字都>=数列中对应位置的数字,求合法(l,s)的数量。0<=l<n,1<=s
阅读全文
摘要:【题意】给定有(n+1)*(m+1)个点的网格图,其中指定k个点不合法,求合法的正方形个数(四顶点合法)。 【算法】计数 【题解】斜着的正方形很麻烦,所以考虑每个斜正方形其外一定有正的外接正方形。 也就是,一个边长为x的正放的正方形,同时代表x个正方形(其中1~x-1为斜正方形)。 num0:首先计
阅读全文
摘要:第一题 n个m位二进制,求异或值域总和。 【题解】异或值域 >使用线性基,解决去重问题。 m位二进制 >拆位,每位根据01数量可以用组合数快速统计总和。 #include<cstdio> #include<cstring> #include<cctype> #include<cmath> #incl
阅读全文
摘要:【算法】动态规划+组合数学 【题意】有一个h行w列的棋盘,定义一些格子为不能走的黑点,现在要求从左上角走到右下角的方案数。 【题解】 大概能考虑到离散化黑点后,中间的空格子直接用组合数计算。 然后解决容斥问题就很重要了。 定义f[i]为走到第i个黑点且不经过其它黑点的方案数。 f[i]=calc(x
阅读全文
摘要:【算法】离散化+容斥原理 【题意】给定大矩阵,可以每格都可以任意填1~m,给定n个子矩阵,要求满足子矩阵内的最大值为vi,求方案数。 n<=10,h,w<=1w。 【题解】 此题重点之一在于离散化,因为有效坐标很少,离散化后遵循左闭右开计算矩阵点数。 然后对于每个格,能填的最大值是min(m,vi)
阅读全文