hpuoj 1192: Sequence
来源:互联网 发布:微盘交易源码下载 编辑:程序博客网 时间:2024/05/22 08:04
点击打开链接
1192: Sequence [组合数学]
时间限制: 3 Sec 内存限制: 128 MB提交: 150 解决: 57 统计
题目描述
在某个夜黑月高的晚上,!!!,原谅我编不下去了。
很美吧?放松之后,继续做题吧。
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
题解:这题就是递推下面是代码:
#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<algorithm>using namespace std;int num[50];long long a[50];int main(){int T;scanf("%d",&T);while(T--){memset(num,0,sizeof(num)); memset(a,0,sizeof(a));long long n,b,s=0,ans=0,endd;scanf("%lld",&n);for(int i = 0 ; i < n ; i++){scanf("%lld",&b);num[b]++;}for(int i= 1 ; i <=10 ; i++){s++;if(num[i]!=0){endd=pow(2,num[i])-1;for(int j = s ; j >= 1 ; j--){if(j==1)a[j]+=endd;elsea[j]+=a[j-1]*endd;}}}for(int i = 1 ; i <= s ; i++){if(a[i])ans+=a[i]*i;}printf("%lld\n",ans);}return 0;}
阅读全文
0 0
- hpuoj 1192 Sequence
- HPUOJ 1192 Sequence
- hpuoj 1192: Sequence
- hpuoj-1192-Sequence【状态压缩】【组合数学】
- **【HPUOJ】
- 【hpuoj】傻圆儿要去哪
- HPUOJ Triangles
- 【HPUOJ】Triangles
- 【HPUoj】1218
- 【HPUoj】1220
- hpu_oj 1192: Sequence
- hpuoj 1193:蛇行矩阵
- hpuoj 1101: 密码截获
- hpuoj 1287 HH实习
- hpuoj 1868 寻宝【BFS】
- hpuoj 1691 追女孩
- hpuoj 1692 找女友
- hpuoj 1696 工程
- SSM项目整合环境的搭建
- LINUX信号注册和执行
- LINUX信号发送
- LINUX信号-sigaction更强壮的信号注册函数
- LINUX线程简介和简单代码案例
- hpuoj 1192: Sequence
- HDU1072-Nightmare【广度优先搜索】
- 猴子下山,动态规划。
- Android 启动过程框架
- TinyXml友员类的复习
- LINUX线程同步初探
- [bzoj4605]崂山白花蛇草水 k-d tree 带替罪羊重构
- POJ 3255 Roadblocks(次短路)
- LINUX信号量实现对公共数据的读写