组合数学
文章平均质量分 65
林苏泽
很多时候终点看着很远,实际也很远,但只要你不向它跑去,他永远都很远,所以只有你向它跑去,才能更接近它,所以加油,向前奔跑吧,即使最后没有到达所想的终点,但我想也不会差。起码我们已经比别人距终点近了好多。
展开
-
力扣-收集足够苹果的最小花园周长[思维+组合数]
思维+组合数原创 2023-12-25 19:50:28 · 568 阅读 · 1 评论 -
CF1301C Ayoub‘s function (容斥+思维)
链接题意:给出长度为n的一个01串,其中有m个1,让我们找出最大点对[l_i,r_i]符合其中至少有一个′1′'1'′1′.求最大能有多少对。分析:首先我们直接找不好找,我们可以通过容斥来换个思路想,我们定义至少有一个1位f(x),全是0为g(x)那么我们要的是f(x)=sum−g(x)f(x)=sum-g(x)f(x)=sum−g(x),sum=n∗(n+1)2sum=\frac{n*(n+1)}{2}sum=2n∗(n+1)我们要f(x)最大,那么就是让g(x)最小。g(x)如何最小那?原创 2021-11-23 16:26:49 · 912 阅读 · 0 评论 -
ARC 128D - Neq Neq(dp+组合数学+思维)
链接题意:给出你一个长度为n的序列,你可以对其操作使得这个序列发生变化,问一共有多少种?对于连续的i-1,i,i+1,这三个数如果满足 ai−1!=aia_{i-1}!=a_{i}ai−1!=ai并且ai!=ai+1a_{i}!=a_{i+1}ai!=ai+1 那么我们就可以将aia_iai删掉。分析:明显看出利用DP来解决组合数学问题。那么我们认为第iii位置,表示到i有dp[i]种方案数。那么他会从那种状态转移过来那?首先dp[i]是继承dp[i-1],这一点是一定的,其次原创 2021-10-18 19:42:35 · 317 阅读 · 2 评论 -
分治FFT
未完待续例题:P4238 【模板】多项式乘法逆链接///苟利国家生死以,岂因祸福避趋之。#include <bits/stdc++.h>using namespace std;#define ll long longconst int N = 5e6 + 7;const double PI = acos(-1);const int p = 998244353, G = 3, Gi = 332748118;int n, m;int limit = 1;ll res, ans原创 2021-09-11 13:23:23 · 375 阅读 · 1 评论 -
ABC 217 G - Groups (组合数学/第二类斯特林数)
题目链接题意:给你NNN个整数,标号为111 ~ NNN要求分成无序非空的kkk组对MMM取模相同的数字不能分在同一组对1≤k≤n1≤k≤n1 ≤ k ≤ n 1 \le k \le n1≤k≤n1≤k≤n都求一次答案2≤N≤5000,2≤M≤N2 \le N \le 5000,2 \le M \le N2≤N≤5000,2≤M≤N分析:我们抛开 对MMM取模相同的数字不能分到同一组这个条件。就将其问题转化成 第二类斯特林数,也就是用dp[i][j]dp[i][j]dp[i][j]表示原创 2021-09-06 20:00:17 · 235 阅读 · 0 评论 -
CF 1567 C. Carrying Conundrum (思维+组合数)
链接题意:给出你一个N让你求出有多少对(a,b)相加构成,如果有进位将其进到前面两位的地方分析:这个题的重点就在是前面两位而不是一位或者其他位。两个就决定了,每一位影响的都是他同奇偶位上的结果,那么我们就可以把奇偶位各自单独拿出来,看如果构成的,单独拿出来后,就是正常进位了,组成方式就是(x+1),我们将其奇偶方案数相乘,然后将两个为0,的情况剔除,但是就是(x+1)*(y+1)-2.#include <bits/stdc++.h>using namespace std;cons原创 2021-09-06 14:36:21 · 180 阅读 · 0 评论 -
2020-2021 ACM-ICPC, Asia Seoul Regional Contest H. Needle(FFT)
链接题意:给出你a,b,c三个序列让求有多少,a[i]+c[i]=2*b[i]分析:首先我们看题意直接跑是O(n2)O(n^2)O(n2)的肯定超时,(50000*50000),所以我们考虑其他方法,我们可以用多项式来模拟这个过程,aixpia_ix^{p_i}aixpi pip_ipi模拟和,aia_iai模拟pip_ipi的个数。因为有负数我们整体移动3e4就好了, 这个全是正的。然后我们就套用FFT板子就好了。///迭代版#include <bits/stdc++.h&g原创 2021-09-05 20:29:47 · 396 阅读 · 1 评论 -
HDU 7060 Separated Number (字符串+组合数学)
链接题意:给出一个数位为nnn的数字(n<=1e6)( n < = 1 e 6 )(n<=1e6),现在可以将该数字最多分成k(1<=k<=n)k ( 1 < = k < = n)k(1<=k<=n)段。定义一种分法的贡献为所有段的数字之和,求所有分法的贡献和。例如对于样例,答案为1+1+10+100=1121 + 1 + 10 + 100 = 1121+1+10+100=112分析:首先我们肯定算每位数字对答案产生的贡献。但是我们能够发现每原创 2021-08-19 21:02:31 · 229 阅读 · 0 评论 -
HDU -7047 Link with Balls(组合数学)
链接题意:有 2n2n2n 个桶第 2x−12x − 12x−1 个桶可以拿 kxk xkx 个球(k>=0k > = 0k>=0)第 2x2x2x 个桶最多拿 xxx个球求拿取 mmm个球的方案数分析:题意有点难懂,虾米题意把朕都搞蒙圈了虽然比较艰难,但是还是可以懂的,赛场上遇见这种也只能细心读下去,抱怨并没有*用进入正题:乐式讲解法show Time:首先我们看题意:无非就是奇数位置可以取k(i+1)2(k>=0)\frac{k(i+1)}{2}(k>=原创 2021-08-14 12:41:15 · 162 阅读 · 0 评论 -
中石油 N. Triangular Collection(组合数学)
题目链接题意:给出你n条边,让你从这n条边中取m(m>=3)条边使得这m条边这个集合中,任意选3条边都能构成三角形,问你一共有多少这样的集合.数据量是n<=50题解:首先我们要知道构成三角形的三条边的条件,两边之和大于第三边(最长边)知道这个条件之后,我们就知道这个其实还是根大小有关的,所以我们可以对其排序,得到一个新序列.之后我们顺其自然的想到固定两个端点(l,r)(l,r)(l,r)(都是下标),这个我们就可以知道最大和最小的限度,这样就可以往里面加lll到rrr的元素.满足条件原创 2021-04-12 21:10:47 · 228 阅读 · 0 评论 -
C. 排列计数(错排)
Description求有多少种长度为n的序列A,满足以下条件:1 n这n个数在序列中各出现了一次若第i个数A[i]的值为i,则称i是稳定的。序列恰好有m个数是稳定的满足条件的序列可能很多,序列数对109+7取模。Input第一行一个数 T,表示有 T 组数据。接下来 T 行,每行两个整数 n,m。T=500000,n≤1000000,m≤1000000Output输出T行,每行一个数,表示求出的序列数SamplesInput 复制51 01 15 2100 5010000原创 2021-03-08 16:48:16 · 416 阅读 · 0 评论 -
A. 取数问题
任给出正整数n和k(1≤n≤1,000,000 , 0≤k≤n),取数规则如下:例如n=16,k=4第一次取数 1 取数后的余数为16-1=15第二次取数 2 取数后的余数为15-2=13第三次取数 4 取数后的余数为13-4=9第四次取数 8 取数后的余数为 9-8=1当第五次取数时,因为余数是1,不够取,此时作如下处理余数1+k=5,再从1开始取第五次取数 1 取数后的余数为5-1=4第六次取数 2 取数后的余数为4-2=2由于第七次取数4,但余数为2,又得重新加k,2+4=6,再从原创 2021-03-03 21:22:11 · 706 阅读 · 1 评论 -
CodeForces -336D. Vasily the Bear and Beautiful Strings(组合数学)
题目链接题意:就是现在如果给出一个串S是一个由01包含的串将这个串进行题意所说的变化, 每次取最后两个字符, 如果是"00"就变成“1”加到末尾, 如果是"01"或“10”或“11”, 就变成“0”来代替其加到末尾, 反复执行直到该串只剩下一个字符为止现在给出n, m, g (0 <= n, m <= 10^5, n + m >= 1, g == 0 || g == 1)求出如果一个串原本有n个0, m个1, 进行上诉变化之后得到的字符是g, 问原来的串的可能性有多少种, 最终结果原创 2020-12-06 09:06:59 · 197 阅读 · 0 评论 -
组合数问题
组合数Cmn表示的是从n个物品中选出m$个物品的方案数。举个例子,从(1, 2, 3)三个物品中选择两个物品可以有(1, 2), (1, 3), (2, 3)这三种选择方法。根据组合数的定义,我们可以给出计算组合数的一般公式:Cmn=n!m!(n−m)!其中 n!=1×2×⋯×n。小葱想知道如果给定n,m和k,对于所有的0≤i≤n, 0≤j≤min(i,m)有多少对(i,j)满足Cji是k的倍数。Input第一行有两个整数t,k,其中t代表该测试点总共有多少组测试数据,k的意义见【问题描述】。接原创 2020-12-02 15:52:39 · 4355 阅读 · 0 评论 -
小猴打架
问题 C: 小猴打架题目描述一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友。每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友。经过N-1次打架之后,整个森林的小猴都会成为好朋友。现在的问题是,总共有多少种不同的打架过程。比如当N=3时,就有{1-2,1-3}{1-2,2-3}{1-3,1-2}{1-3,2-3}{2-3,1-2}{2-3,1-3}六种不同的打架过程。输入一个整数N。输出一行,方案数mod 9999991。样例输入 Copy原创 2020-11-30 16:42:19 · 263 阅读 · 0 评论 -
2020年ccpc长春站D-Meaningless Sequence
首先引用一下大佬的博客推一下为什么是这样的:首先:当二进制是满1的话就是∑i=0xai=(1+c)n\sum_{i=0}^{x}a_{i} = (1+c)^{n}∑i=0xai=(1+c)n其中nnn为xxx的二进制位数,这个其实很容易就能看出来吧按我的思路说一下:相当于一共nnn位在nnn位取小于等于nnn个1其实就是组合数Cn0∗c0+Cn1∗c1+...+Cnn∗cn=(1+c)nC_{n}^{0}*c^{0}+C_{n}^{1}*c^{1}+...+C_{n}^{n}*c^{n} = (1.原创 2020-11-09 09:53:54 · 657 阅读 · 0 评论 -
CF-D. Divide and Sum
D. Divide and Sumtime limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputYou are given an array a of length 2n. Consider a partition of array a into two subsequences p and q of length n each (each elemen原创 2020-11-07 21:10:22 · 198 阅读 · 0 评论 -
Contest2230 - 抗击疫情,从我做起--大中小学生联合训练赛第三十九场3-10
问题 A: 海岸线题目描述一个王国分成n*m个六边形区域,每个区域内是陆地或者是水。如果一条边两侧为陆地和水,则该条边成为海岸线,求这个王国海岸线的长度。输入第一行两个整数N,M。以下N行每行M个字符,“.”表示水,“#”表示陆地。偶数行需要向右移半格,具体见样例。输出一个整数,海岸线的长度。样例输入 Copy3 6…#.##.##.#.#.#…样例输...原创 2020-03-10 23:22:26 · 623 阅读 · 0 评论 -
组合数学(母函数)
母函数生成函数定义一个小栗子3个糖栗子[A 找单词](https://vjudge.net/contest/361385#problem/A)母函数有一点特别注意一下就是初始值的问题,指数为零的初始值设为1,其他都为零,因为你要满是指数为零的系数为1 要不你的多项式相乘,不就没什么意思了吗?,当然最后,0的系数,不加进去,零不算单词另一解法背包方案数[E - Ignatius and the Pr...原创 2020-03-17 16:03:52 · 863 阅读 · 0 评论