![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
组合数
文章平均质量分 55
WorldWide_D
这个作者很懒,什么都没留下…
展开
-
[Codeforces37D]Lesson Timetable
题目大意有m个教室,第i个教室最多能容纳Yi组人,初始时第i个教室有Xi组人。 现在每组人要从当前所在的教室a移动到教室b(a≤b)。我们不知道第i组人初始在哪间教室,以及它要去哪间教室,求可能的方案数。答案对109+710^9+7取模数据范围1≤m≤100 0<∑Xi \sum{Xi}≤1000 0≤Xi,Yi≤100思路设s[i]=∑ij=1xj\sum_{j=1}^i xj 先原创 2016-06-28 14:43:49 · 823 阅读 · 0 评论 -
[codeforces848D] Shake It!
题目大意给定n,m,最开始一个无向图中只有两个点s,t和连接它们的一条边。你需要进行n次操作,每次选择图中一条边(u,v),加入一个点i,并且添加两条边(u,i),(i,v)。 问最终有多少种不同构的图,满足其s-t最小割为m。模10^9+7输出n,m≤50分析设f[i][j]表示i次操作,s-t最小割为j的方案数。 接下来你需要枚举五个数a,b,c,d,x(其中四元组(a,b原创 2018-01-09 22:21:04 · 661 阅读 · 0 评论 -
[codeforces856C]Eleventh Birthday
题目大意给定n个正整数,你需要把它们按任意顺序拼接,得到一个大数。问有多少种方案使得最终得到11的倍数。如果两个数相同,它们交换位置也算不同方案。答案对998244353取模n≤2000 数字≤10910^9分析找突破口。 我们发现,一个数的奇数位每加1,对模11的余数的贡献是1,偶数为每加1,贡献是-1。 证明?10≡−1(mod11)10≡-1(mod 11) 我们跟着这个思路走下去。对原创 2018-01-12 22:22:26 · 743 阅读 · 0 评论 -
[codeforces582D]Number of Binominal Coefficients
题目大意给定质数p和正整数α、k,求多少对(n,k)满足0≤m≤n≤α 且CmnC_{n}^m是pkp^k的倍数p,k≤10910^9 n≤10100010^{1000}分析此题要用到库默尔定理:设m,n为正整数,p为素数,则Cnm+nC_{m+n}^n含p的幂次等于p进制下m与n相加的进位次数。 有了这个定理就可以很好地解题了。先把n转化为p进制,然后考虑数位DP。设f[i][j][x][y]原创 2017-08-22 19:36:47 · 681 阅读 · 0 评论 -
[bzoj4870] [Shoi2017]组合数问题
题目大意略…分析注意到一个重要的条件:t< k 那么根据组合数的意义,可以理解为从nk件物品里取若干件,满足取出物件数量模k等于t的方案数。 又发现k很小,然后可以设出DP:设f[i][j]表示前i件物品取的件数模k等于j的方案数。转移很显然。 用矩阵乘法可以做到O(k3lognk)O(k^3lognk) 然而这个DP满足结合律,即假设我们已经求出了数组f[n][],可以求出f[2n][],原创 2017-07-09 21:18:26 · 534 阅读 · 0 评论 -
[bzoj4550] 小奇的博弈
题目大意略…分析首先单独分析一对石子(相邻的且左边白右边黑):第一步如果白棋向右走,可以把间隔减小任意步,轮到黑棋的时候,黑棋显然也可以减小间隔。如果某一方无法缩小间隔,而往另一方向,另一方可以再贴上去,走反方向显然不是最优的。 然后就可以把一对石子看成一堆石子了。 现在有k/2对石子,每次可以选择1到d对,那么就是NimK问题。NimK先手必败的条件:把每堆石子看成二进制,对于二进制每一位,所原创 2017-07-14 15:13:17 · 814 阅读 · 0 评论 -
【GDOI2017第二轮模拟day2】中位数
题目大意给定n,k,求多少个n的排列在经过以下计算后得到k: n≤1000000 且为奇数分析直接算不好算,可以转化成:结果是大于等于k的减大于等于k+1的。 然后把大于等于k的数看成1,小于k的看成0。继续挖掘有什么性质。 把每一层看成去掉第一、最后的位置,在草稿纸上手玩一下,可以发现: 1. 如果原序列中间的数是1,且两边有一个1,那么答案一定是1 2. 如果原序列中间的数与两边的不同原创 2017-04-16 22:16:10 · 1044 阅读 · 0 评论 -
【GDOI2017第二轮模拟day1】最长路径
题目大意给定n,求对于i=1…n,从点1出发最长简单路径长度为i的竞赛图数量模一个10^9级别的模数(竞赛图:对于任意点i≠j,它们之间有且只有一条有向边)n≤2000分析做这题需要两个结论。 1. 一个强连通竞赛图必然存在一条哈密顿回路。证明:首先3个点的显然存在,假设k个点的存在一条哈密顿回路,那么现在加入第k+1个点,只要存在回路上相邻两个点p,q,满足p连向k+1,k+1连向q即可。如果没原创 2017-04-15 16:55:55 · 1211 阅读 · 0 评论 -
[bzoj2655] calc
题目大意你可以构造一个长度为n的序列,满足:所有数都是[1,A]范围内的整数,且每个数都不相同。 给定n,A,mod,求所有合法的序列,n个数乘积的和模mod的值。(mod是个质数)n+1 < A < mod≤10910^9 n≤500分析dalao们都是拉格朗日插值法做的,我太弱了只会用容斥。。。n个数各不相同,就相当于n(n−1)2\frac{n(n-1)}{2}个形如x≠y的限制。如果当前一原创 2017-02-11 15:59:34 · 1512 阅读 · 2 评论 -
【WC2017模拟1.22】简单题
题目大意给定n,k,求把n!拆分成k个不同的正整数的乘积的方案数。(一种方案的排列仍是一种方案)。答案对109+710^9+7取模。n≤10000 k≤30时限为4s分析这是一道容斥好题。首先可以不管算重,最终答案除以k!k!即可。接下来考虑如何容斥。k个数互不相同,其实就相当于k(k−1)2\frac{k(k-1)}{2}个限制条件。如果一个方案不满足x个条件,那么它要乘上的容斥系数为(−1)原创 2017-01-23 17:21:56 · 4405 阅读 · 0 评论 -
[bzoj4361]Isn
题目大意给定一个长度为n的序列A,如果当前序列不是不下降的,就必须删去其中一个数,直到得到一个不下降的序列,求可以的操作方案数模1000000007。数据范围10%:n≤10 30%:n≤20 45%:n≤50 65%:n≤200 100%:1≤n≤2000暴力做法10%直接上暴力。30%枚举哪些数删去,然后找出能最后一个删去的数,放在最后一个后剩下随便排列。 什么数能放在最后删去?假设第原创 2016-07-20 18:25:12 · 611 阅读 · 0 评论 -
[bzoj4584]: [Apio2016]赛艇
题目大意有n个区间,第i个是[Li,Ri] 现在要在至少1个区间里各取一个数,要求:假设区间i取出了一个数,上一个取数的区间编号为j,那么i取出的数要大于j取出的。问有多少种方案。答案模109+710^9+7n≤500 1≤Li≤Ri≤10910^9分析暴力的dp是设f[i][j],表示前i个区间最后一个取出的数是j。转移略。第二维太大了,尝试优化一下状态。可以发现,Li,Ri一共只有2n个,原创 2017-01-16 11:35:18 · 1057 阅读 · 0 评论 -
[51nod1233] Grid Lines
题目大意在平面直角坐标系中,选择一个包含k个点的点集,满足: 1. 坐标都为整数,且x∈[0,n],y∈[0,m] 2. 所有点共线 3. 至少一个点在直线x=n,y=m,x轴,y轴的其中一个上求满足条件的点集数量模109+710^9+7的值2≤n,m,k≤10610^6分析首先考虑第三个条件。要保证有一个点在边界上很难,去掉这个条件就很好求。那么可以考虑求出不考虑这个条件的答案ans1,再把原创 2017-01-15 21:45:46 · 428 阅读 · 0 评论 -
[hackerrank Value of all Permutations]
题目大意给定一个N个元素的序列A,有Q次询问,每次给出一个M,求对于A的所有排列跑下面的函数,返回值的和模P的答案find(int permutation_A[], int M){ x = Length(permutation_A) sum = 0 for(i = 0; i < x; i++) { if (permutation_A[i] <= M)原创 2016-12-06 16:47:43 · 358 阅读 · 0 评论 -
【NOIP2016提高组11.7】涂色游戏
题目大意给你n行m列的网格,每个格子可以涂上一种颜色,一共有p种颜色,要求相邻两行的颜色总数不小于q。求方案数模998244353的结果。n≤100 m≤10910^9 q≤p≤100分析首先设f[i][j]表示决策好了前i列,最后一列有j种颜色的方案数。现在考虑第i+1列。 枚举一个k,表示第i+1列的颜色总数,再枚举两行都出现的颜色数x。转移:f[i+1][k]=∑f[i][j]∗C原创 2016-11-07 15:46:43 · 692 阅读 · 0 评论 -
[codeforces722E] Research Rover
题目大意有一个n*m的网格图,你要从(1,1)走到(n,m),每一步可以向右(或向下)走。你最开始有s点能量,然而有k个障碍点,每到达一个障碍点,你的能量会变成⌈x2⌉\lceil \frac{x}{2} \rceil。问走到(n,m)时你最终能量的期望。假设它是PQ\frac{P}{Q},输出P∗Q−1P*Q^{-1}模109+710^9+7的逆元。数据范围n,m≤100000 k≤2000原创 2016-10-27 17:22:47 · 811 阅读 · 0 评论 -
[51nod1149]Pi的递推式
题目大意F(x) = 1 (0 <= x < 4) F(n) = F(n - 1) + F(n - pi) (4 <= x) Pi = 3.1415926535….. 现在给出一个N,求F(n)。由于结果巨大,只输出Mod 10^9 + 7的结果即可。n≤1000000分析一个很好的思路。 这样的递推过程可以看成一个DAG,求编号为n的点到编号为{x,∈[0,4)}的点到的路径总数。 首先原创 2016-10-24 14:59:58 · 575 阅读 · 0 评论 -
[51nod1228]序列求和
题目大意设T(n) = n^k,S(n) = ∑ni=1T(i)\sum_{i=1}^n T(i)。给出n和k,求S(n)。 例如k = 2,n = 5,S(n) = 1^2 + 2^2 + 3^2 + 4^2 + 5^2 = 55。 由于结果很大,输出S(n) Mod 1000000007的结果即可。数据范围T≤5000 k≤2000 N≤101810^{18}分析n很大,所以复杂度不应该原创 2016-07-10 22:09:13 · 1131 阅读 · 0 评论 -
[arc061F] Card Game for Three
题目大意A,B,C三个人玩游戏,最初每个人分别有n,m,k张牌,每张牌上有字母a,b,c之一,但是不知道每张牌具体是什么。由A先操作,每轮操作者翻出自己牌堆顶的一张牌并弃置,下一轮的操作者是该牌上字母对应的人。不能操作的人赢。问有多少种初始牌的情况能使A胜利。答案模1,000,000,0071≤n,m,K≤300,000分析考虑枚举翻牌序列有x个b,有y个c,那么序列长度应该是n+x+y。由于最后一原创 2018-02-27 15:53:31 · 721 阅读 · 0 评论