20150311总结
来源:互联网 发布:少女前线9a91白板数据 编辑:程序博客网 时间:2024/06/12 22:57
biga:
题目大意:一个有N个元素的集合有2^N个不同子集,现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为k,求取法的方案数,答案模1000000007。
解法:先计算交集大小至少为i的集合有C(n, m)种,其它2^(n - m)个集合 一共2 ^ (2 ^ (n - m))种,反复容斥,若i为偶数,答案增加 C(n, i) * C(i, k) * 2 ^ (2 ^ (n - i)),否则减小 C(n, i) * C(i, k) * 2 ^ (2 ^ (n - i));
最后公式为:
fac[0] = 1; for (int i = 1; i <= n; i++) fac[i] = fac[i - 1] * i % mod; inv[1] = 1; for (int i = 2; i <= n; i++) inv[i] = (mod - mod / i) * inv[mod % i] % mod; inv[0] = 1; for (int i = 1; i <= n; i++) inv[i] = (inv[i] % mod) * (inv[i - 1] % mod) % mod; long long tmp = 2; for (int i = n; i >= k; --i) { if (i != n) tmp = (tmp % mod) * (tmp % mod) % mod; long long cni = fac[n] * inv[i] % mod * inv[n - i] % mod; long long cik = fac[i] * inv[k] % mod * inv[i - k] % mod; ans += (i - k & 1 ? mod - 1 : 1) * cni % mod * cik % mod * tmp % mod; ans %= mod; }
bigj:
题目:
高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友。这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文科或者理科,那么他们又将收获一些喜悦值。作为计算机竞赛教练的scp大老板,想知道如何分配可以使得全班的喜悦值总和最大。
输入:
第一行两个正整数n,m。
接下来是六个矩阵。
第一个矩阵为n行m列 此矩阵的第i行第j列的数字表示座位在第i行第j列的同学选择文科获得的喜悦值。
第二个矩阵为n行m列 此矩阵的第i行第j列的数字表示座位在第i行第j列的同学选择理科获得的喜悦值。
第三个矩阵为n-1行m列 此矩阵的第i行第j列的数字表示座位在第i行第j列的同学与第i+1行第j列的同学同时选择文科获得的额外喜悦值。
第四个矩阵为n-1行m列 此矩阵的第i行第j列的数字表示座位在第i行第j列的同学与第i+1行第j列的同学同时选择理科获得的额外喜悦值。
第五个矩阵为n行m-1列 此矩阵的第i行第j列的数字表示座位在第i行第j列的同学与第i行第j+1列的同学同时选择文科获得的额外喜悦值。
第六个矩阵为n行m-1列 此矩阵的第i行第j列的数字表示座位在第i行第j列的同学与第i行第j+1列的同学同时选择理科获得的额外喜悦值。
解法:参考bzoj3894所使用的思路,每个人抽象成一个点p,S向p连边,流量为选文科的高兴值,p向T连边,流量为选理科的高兴值。
然后加点:
S向p1连边,流量为与第i+1行第j列的同学同时选择文科的高兴值,p1向相邻点和自己的p连边,流量为inf
p2相T连边,流量为与第i+1行第j列的同学同时选择理科的高兴值,相邻点和自己的p向p2连边,流量为inf
S向p3连边,流量为与第i行第j+1列的同学同时选择文科的高兴值,p3向相邻点和自己的p连边,流量为inf
p4相T连边,流量为与第i行第j+1列的同学同时选择理科的高兴值,相邻点和自己的p向p4连边,流量为inf
然后就是裸的最大流了
- 20150311总结
- 总结
- 总结
- 总结
- 总结
- 总结!
- 总结
- 总结.
- 总结。
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 深入 Java自定义注解
- mybatis实战教程(mybatis in action),mybatis入门到精通
- 1073. Scientific Notation (20)
- dp(good)uva10306e-Coins
- java常用数据结构
- 20150311总结
- hdu 3535 经典混合分组背包
- 阿里一面和二面
- android4.0没有真正的全屏显示,控制面板隐藏不了,唯一能做的,就是将控制键改成三个小圆点。
- Unity中camera的使用方法
- 循序渐进学习嵌入式linux开发---十步安装 vmware
- Moment.js--一个实用的日期处理工具
- 二叉树之二分查找树
- VirtualBox中安装CentOS7后无法上网的解决方案