HPU 1192 Sequence(状态压缩+组合数学)
来源:互联网 发布:mt4软件使用说明 编辑:程序博客网 时间:2024/06/08 19:50
题目描述
在某个夜黑月高的晚上,!!!,原谅我编不下去了。
很美吧?放松之后,继续做题吧。
HS(Handsome)的Ocean在纸上写下
Ocean认为一个序列的价值的是:序列中不同元素个数。
现在他想知道
比如序列
输入
第一行输入一个整数T T,代表有T T组测试数据。
每组数据占两行,第一行输入一个整数N N,代表序列元素个数。
接下来一行输入N N个整数ai ai。
注:1<=T<=10000,1<=N<=50,1<=ai<=10。 1<=T<=10000,1<=N<=50,1<=ai<=10。
每组数据占两行,第一行输入一个整数
接下来一行输入
注:
输出
对每组测试数据,输出一个结果代表所有子序列价值之和。由于结果会很大,请用longlong longlong(%lld)。
样例输入
431 1 141 1 1 1410 10 10 8201 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
样例输出
715227864320
题解:先转态压缩~组合数学~然后统计每个元素的贡献即可~
每个集合(即每个数是否选取)可以用二进制表示~1~代表选取~0~代表不选取~只用 2 ^ 10 即可~~然后统计集合里每个元素的贡献~总贡献 = 每个元素的贡献的乘积~每个元素的子序列 = 2 ^ 元素个数 - 1;时间复杂度O(10 * 2 ^ 10)
对于每个子序列对a[i]都有两种情况: 选或者不选 ,就用10位的二进制表示每个序列的组成 比如1111111100 就说明这个序列由3-10组成 那这个序列的价值就是3+4+5+.....+10 构成这个序列的个数有(2^cn[3]-1)*(2^cnt[4]-1)*(2^cnt[4]-1)*........*(2^cnt[10]-1) 个 cnt[i]表示原序列中出现了多少个i , 3在圆序列中出现了cnt[3]次如果子序列含有3 那么这个序列中的3的个数可能是1,2,3,.....cnt[3]个,就是从cnt[3]中抽出1,2,3,.. cnt[3]个数 用二项式 C(n,1)+C(n,2)+C(n,3)+......+C(n,n)=2^n-1得出上述式子,
每个元素的子序列 = 2 ^ 元素个数 - 1;就是组合数学,存在该元素的不同组合数。
#include<cstdio>#define LL long long int main(){int t;int a[13];scanf("%d",&t);while(t--){int N, c;scanf("%d",&N);for(int i=0;i<=10;i++) a[i]=0;for(int i=0;i<N;i++){scanf("%d",&c);a[c]++;} LL m=1<<10;LL sum=0;for(LL i=1;i<m;i++){LL num=0,ans=1;for(int j=0;j<10;j++){ if(i&(1<<j)){ //判断该元素是否在集合中 num++; //如果存在该元素,就加1,记录的是存在不同元素的个数 ans*=(((LL)1<<a[j+1])-1); //该元素存在的不同组合数 }}sum+=num*ans; } printf("%lld\n",sum);}return 0;}
如果一个序列的价值:该序列中不同元素之和,只需将num++改为num+=j。
0 0
- 【HPU 1192 Sequence】+ 状态压缩 +组合数学
- HPU 1192 Sequence(状态压缩+组合数学)
- 【HPU 1192】: Sequence 【 状态压缩】
- hpuoj-1192-Sequence【状态压缩】【组合数学】
- hpu 1192 Sequence (dp+组合数学)
- HPU 1192:Sequence(组合数+二进制选数)
- hpu 【1190】確率(组合数学)
- 【hpu oj 1010 QAQ的序列价值 [数学、状态压缩]】
- POJ3920状态压缩和组合数学
- HDU4908BestCoder Sequence(组合数学)
- (hdu1005)Number Sequence(组合数学)
- POJ 1019 Number Sequence(组合数学)
- Number Sequence--组合数学
- CodeForces 451E Devu and Flowers(容斥原理+组合数学+状态压缩)
- 【唯一分解定理 && 状态压缩 && 组合数学】LightOJ
- 【hpu oj 1011 QAQ的序列组合 [组合数学]】
- HPU 1010: QAQ的序列价值【状压&组合数学】
- hdu 4390 Number Sequence(组合数学+容斥定理)
- Tree
- excel利用反射动态导入到实体类
- Android Studio相关使用方法
- iText 学习使用
- 集成融云直播聊天室(官方集成以及自我总结)
- HPU 1192 Sequence(状态压缩+组合数学)
- MySQL多实例安装配置
- Storm搭建_ip限制
- 第十四周项目3-是否二叉排序树?
- google/protobuf--VS2015编译、使用
- 生成唯一ID
- cocos-js 使用clipingnode 将正方形图片裁切成圆形图片
- linux-重定向与管道
- protoBuf编译