
组合数学
Lynstery
一只蒟蒻
展开
-
[组合 卡特兰数] 51Nod1556 计算
卡特兰数的简单应用。就是枚举加几个0,剩下的就是卡特兰数相关的理论。 设加 nn 个 11,mm 个 −1-1,则满足前缀和非负的方案数为 (n+mm)−(n+mm−1){n+m \choose m}-{n+m\choose m-1}。 由于这题最后的总和没有规定,所以我们需要算 f(x)f(x) 表示 n+m=xn+m=x 时的所有方案: f(x)=∑m=0⌊x2⌋( (xm)−(xm−1)原创 2017-10-21 08:32:23 · 393 阅读 · 0 评论 -
[组合] Vijos P1943:[AHOI2015 Junior] 上学路上
简单组合题。想想卡特兰数的推导,肯定能想到答案就是 (x1+y1x1)(x2+y2x2)−(x2+y1x2)(x1+y2x1) {x_1+y_1\choose x_1}{x_2+y_2\choose x_2}-{x_2+y_1\choose x_2}{x_1+y_2\choose x_1}#include<cstdio>#include<cstring>#include<algorithm>原创 2017-11-03 16:07:14 · 387 阅读 · 0 评论 -
[组合] Codeforces #575H. Bots
题意即求 ∑i=0n∑j=0n(i+ji)=∑i=0n(i+n+1i+1)=(2∗n+2n+1)−1\sum_{i=0}^n \sum_{j=0}^n { i+j \choose i}= \sum_{i=0}^n {i+n+1\choose i+1}={2*n+2\choose n+1}-1 就是一些组合数的变形#include<cstdio>#include<cstring>#inc原创 2017-11-03 15:39:33 · 453 阅读 · 0 评论 -
[组合] Codeforces #571A. Lengthening Sticks
一开始正着做很复杂,然后发现补集转化一下就很方便了,随便搞一下…#include<cstdio>#include<algorithm>using namespace std;const int maxn=100005;typedef long long LL;int a,b,c,L,d;LL ans;LL get(int a,int b,int c){ int x=min(L+原创 2017-10-24 20:54:28 · 466 阅读 · 0 评论 -
[组合] Codeforces #660E. Different Subsets For All Tuples
这种题做起来贼爽… 套路考虑一个子序列的贡献,有个问题就是每种 aa 串只计算一次,如何避免重复。 很简单,对于一个串 aa ,只在第一次出现这个子序列的位置算贡献。 考虑一个子序列,下标分别为 k1,k2,...,ktk_1,k_2,...,k_t。11 到 k1−1k_1-1 不能出现 ak1a_{k_1} ,k1+1k_1+1 到 k2−1k_2-1 不能出现 ak2a_{k_2},…原创 2017-11-01 16:43:09 · 434 阅读 · 0 评论 -
[高维前缀和] ZROI 2017提高2 World Of Our Own
好题。设 f[i]f[i] 表示 ii 次操作之后的答案。则显然有 f[i]=Xorij=0[(ji)is odd]∗a[j]f[i]=\text{Xor}_{j=0}^{i} [{ j\choose i} is\ odd]*a[j] 现在我们需要考虑如何判断一个组合数的奇偶性。考虑 lucaslucas : (ij) % 2=∏k(ikjk){ i \choose j} \text{原创 2017-10-06 21:33:57 · 682 阅读 · 0 评论 -
[Lucas + 高维前缀和] HHHOJ#75. 虚妄之诺
我太菜了…做过类似的题还不会做…. 这题和之前做过的 ZROI 2017提高2 World Of Our Own 很像。总体思路就是异或的贡献是一个组合数的式子,用卢卡斯判断组合数奇偶,就转化成了子集和的形式,经典的高维前缀和就好了。 具体来说,我们考虑每个点对根的贡献,只需关注它到根的路径上的点被加的贡献。 1 1 1 1 1 1 1 1 1 1 1 2 3 4原创 2017-10-24 15:10:02 · 752 阅读 · 0 评论 -
[杂题] Codeforces #121C. Lucky Permutation
这题很 cfcf 。虽然 nn 很大,但由于 KK 只有 1e91e9,所以数列前面大部分数字是在原位的。13!=622702080013!=6227020800,只有后面不到 1414 位会变化,后面暴力就好了。 前面的 11到 n−13n-13,数位 DPDP 求答案。#include<cstdio>#include<algorithm>using namespace std;const原创 2017-10-23 17:00:20 · 426 阅读 · 0 评论 -
[杂题 组合] Codeforces #40E. Number Table
题很关键的一点是注意到 kk 严格小于 max(n,m)max(n,m),所有一行或一列是完全空的。 然后就很简单了,只需考虑一维的限制。 瞎搞就好了。#include<cstdio>#include<algorithm>using namespace std;typedef long long LL;const int maxn=1005;int n,m,K,cnt[maxn],v[原创 2017-11-07 16:31:54 · 475 阅读 · 0 评论 -
[错排] BZOJ2034:「SDOI2016」排列计数
大水题。 主要是记一下错排的公式。顺便水一水 递推公式:fi=(i−1)(fi+fi−1)f_i=(i-1)(f_i+f_{i-1}) 推导过程大概是,考虑数字ii, 它有 i−1i-1 种可能的位置,设 ii 在位置 kk ,则数字 kk 可能放在 位置 ii 或不放在位置 ii。放在位置 ii , 则其他方案数等价于 fi−2f_{i-2},否则等价于 fi−1f_{i-1}。 还有一个原创 2017-12-14 20:33:18 · 438 阅读 · 0 评论