Hdu 3929 Big Coefficients (容斥原理 二项式性质)
来源:互联网 发布:防火知多少安全教案 编辑:程序博客网 时间:2024/05/08 21:13
二项式定理有两个性质,这题只用到第一个。
性质1:若k表示把n转为二进制后所有位中1的个数,则(1 + x) ^ n中系数为奇数的个数为2 ^ k。
性质2:(1 + x) ^ n中的系数中 所有奇系数之和等于偶系数之和等于 2^(n-1)
以下内容参考了:http://hi.baidu.com/yy17yy/item/f703320adb5cafeb34990256
有三个集合ABC,则num(A∪B∪C)=num(A)+num(B)+num(C) -num(A∩B)-num(A∩C)-num(B∩C) +num(A∩B∩C)容斥原理有一般有简单的递归式
dfs (int beg,set S,int sym){ans+=num(S)*sym;for (int i=beg;i<=n;i++)dfs(i,S∩A[i],sym*-1);}for (int i=1;i<=n;i++)dfs(i,A[i],1);
题意:给出a1,a2,```am,F(x) = (1+x)^a1 + (1+x)^a2 + ``` + (1+x)^am,F(x)的展开式中系数为奇数的个数。
思路:每个(1 + x) ^ n都是一个集合,它的奇数次项的个数就是集合中元素的个数,算法是2^(系数的二进制里1的个数),
两个集合的交: 比如系数w1,w2,集合的交的个数是2^(w1&w2的二进制里1的个数),
由于奇数次幂相交不一定是奇数次幂,所以所以要把偶数个集合的交的个数减掉,写一下式子,发现问题没有变复杂,只需把上面的递归式的sym由-1变为-2既可。
以三个集合ABC为例:num(A∪B∪C)-num(A∩B)-num(A∩C)-num(B∩C)+3*num(A∩B∩C) 即为所求
也就是 num(A)+num(B)+num(C) -2*num(A∩B)-2*num(A∩C)-2*num(B∩C) +4*num(A∩B∩C)
#include <cstdio>__int64 ans,data[20];int n;int get (__int64 x){//计算x的二级制位有多少个1return x==0?0:get(x-(x&-x))+1; //(x&-x)是取出最低位的1}void DFS (int begin,__int64 num,__int64 sym){ans+=((__int64)1<<get(num))*sym;for (int i=begin+1;i<=n;i++)DFS (i,num&data[i],-2*sym);}int main (){int T,i;scanf("%d",&T);for (int Cas=1;Cas<=T;Cas++){scanf("%d",&n);for (i=1;i<=n;i++) scanf("%I64d",&data[i]);ans=0;for (i=1;i<=n;i++)DFS(i,data[i],1);printf("Case #%d: %I64d\n",Cas,ans);}return 0;}
0 0
- Hdu 3929 Big Coefficients (容斥原理 二项式性质)
- Hdu 3929 Big Coefficients (容斥原理 二项式性质)
- hdu 3929 Big Coefficients(Lucas定理+容斥原理)
- HDU 3929 Big Coefficients(容斥+证明)
- HDU 3929 容斥原理
- poj 1091 跳蚤 扩展欧几里得性质+容斥原理
- hdu 5468 Puzzled Elena(前缀性质+dfs序+容斥)
- 【容斥原理】HDU 4135
- hdu 4135 容斥原理
- hdu 4336 容斥原理
- hdu 1695 容斥原理
- hdu 4407 容斥原理
- HDU 1796 容斥原理
- hdu 1796 容斥原理
- hdu 4135 (容斥原理)
- HDU 1695 容斥原理
- HDU 4135 容斥原理
- hdu 4407 容斥原理
- Algorithm-A*搜索
- “河北超生女婴被抱走”案二审驳回上诉维持原判
- ZOJ 1563 Pearls(DP)
- __try,__except,__finally,__leave异常模型机制
- Xib的问题,很棘手(解决办法)
- Hdu 3929 Big Coefficients (容斥原理 二项式性质)
- 【走进Lua的世界之一】初识Lua
- 连接与会话
- 黑马程序员-java基础-面向对象-多态和内部类
- win7下u盘安装ubuntu组成双系统
- 【AC自动机】HDU2222
- Morning Walk-uva 经典的欧拉回路
- Java并发编程之线程管理(基本线程同步5)
- Java线程总结(2):线程同步