组合数学
fyc_kabuto
一个蒟蒻程序员
展开
-
bzoj 1211: [HNOI2004]树的计数
涨姿势原创 2017-10-10 17:11:59 · 310 阅读 · 0 评论 -
牛客noip2018练习赛5 C串串
题意:告诉你S,T分别有多少01,问多少对S,T满足T是S的子序列。题解:#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#define LL long longusing namespace std;const LL mod=1e9+7;L...原创 2018-10-15 16:44:16 · 202 阅读 · 0 评论 -
Codeforces 960G Bandit Blues 第一类斯特林数+分治FFT
懒人模式:orz beginend code:#include<cmath>#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#define LL long longusing namespace std;const LL p=998...原创 2018-04-21 10:55:20 · 402 阅读 · 0 评论 -
bzoj 2916: [Poi1997]Monochromatic Triangles
容斥SB题原创 2018-01-06 10:12:44 · 275 阅读 · 0 评论 -
一个有用的定理
今天%popoqqq的时候看到了一个他不屑于证的定理 ∑i=偶数C(i,n)=∑i=偶数C(i,n)(n不等于0)\sum_{i=偶数} C(i,n) = \sum_{i=偶数} C(i,n) (n不等于0) 怎么证明呢?(开启口胡模式)第一种情况:n为奇数时显然(无论选偶数/奇数,剩下的一定是奇数/偶数)第二种情况:n为偶数且n/2为奇数。 那我们先考虑n/2的情况,即在n的一半选数。原创 2017-08-09 11:09:54 · 306 阅读 · 0 评论 -
bzoj 1801: [Ahoi2009]chess 中国象棋
题意:在n*m的棋盘中放炮,使得他们不能相互攻击的方案数。题解:也就是说同一行/列不能有超过两个炮。 似曾相识的感觉(其实是我SB没想到更简单的状态表示) 于是我把他当成二分图,同一个点至多匹配两次,dp统计方案数。 f[i][j][k]f[i][j][k]表示左边用了i个点,右边j个点匹配了两次,k个点匹配了一次。 后来发现其实等价于前i行,j个列有两个炮,k个列一个炮。 瞎转移就好了,原创 2017-09-01 20:55:05 · 338 阅读 · 0 评论 -
bzoj 4806: 炮
同bzoj1801改个模数。 code:#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#define LL long longusing namespace std;const LL mod=999983;LL n,m,c[150][3],f[110][110][110];void pre()原创 2017-09-01 20:56:58 · 272 阅读 · 0 评论 -
cf869C The Intriguing Obsession
题解:因为太菜了,没想出正解。 容易发现,三行间两两是独立的,最后乘起来就好了。 而两两间其实不难算,昨晚一直想dp去了,于是荒废半小时。 直接组合数学:∑i=0min(n,m)CinCimi!\sum^{min(n,m)}_{i=0}C_n^iC_m^ii!最后乘起来。 好像不怎么难,但我太菜了。 code:#include<cstdio>#include<cstdlib>#incl原创 2017-10-07 10:09:25 · 510 阅读 · 0 评论 -
bzoj 1227: [SDOI2009]虔诚的墓主人
扫描线原创 2017-10-10 11:14:31 · 315 阅读 · 0 评论 -
bzoj 4767: 两双手
题意:给出两个向量,问多少种方式能够不经障碍点到达终点。题解:因为向量可以唯一拆分成两个向量,所以就成了网格图计数。为了方便,将终点也视为障碍点,设f[i]f[i]f[i]表示到第i个障碍点的方案数。若不考虑其它障碍点,那么就是Cx+yyC_{x+y}^yCx+yy,然后减掉从其它障碍点到这个点的情况就好了。code:#include<cstdio>#include&...原创 2018-10-25 19:30:46 · 268 阅读 · 0 评论