HPU 1010: QAQ的序列价值【状压&组合数学】
来源:互联网 发布:淘宝卖家诈骗怎么办 编辑:程序博客网 时间:2024/05/21 19:29
1010: QAQ的序列价值 [数学、状态压缩]
时间限制: 3 Sec 内存限制: 128 MB
题目描述
QAQ有一个序列,元素个数有N个。他认为一个序列的价值的是:该序列中不同元素之和。比如说:序列(1,1,2,2)价值为3。现在QAQ想知道所有子序列的价值之和。
输入
第一行输入一个整数TT,代表有T组测试数据。
每组数据占两行,第一行输入一个整数N,代表序列元素个数。
接下来一行输入N个整数a[]。
注:1<=T<=10000,1<=N<=50,1<=a[]<=10。
输出
对每组测试数据,输出一个整数代表所有子序列价值之和。结果很大,请对(109+7)取余。
样例输入
2
3
1 1 1
4
10 10 10 8
样例输出
7
204
提示
对于第二组测试数据一共有15个子序列:
(10)、(10)、(10)、(8)、(10,10)、(10,10)、(10,10)、(10,8)、(10,8)、(10,8)、(10,10,8)、(10,10,8)、(10,10,8)、(10,10,10)、(10,10,10,8),价值之和为204。
思路:CZY题解
ai范围很小,二进制枚举ai选择状态,用sum统计每一次状态的序列和,组合方案就是
cnt=(2num[i]−1)∗(2num[i+1]−1)∗…∗(2num[N]−1),两者相乘就是结果。
*利用位运算,用二进制枚举每一种状态(范围很小),通常都是和组合数学有关的问题;
#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>using namespace std;typedef long long LL;const int mod = 1e9 + 7;int num[15];LL dp[110];void init() { dp[0] = 1; for(int i = 1; i <= 51; i++) { dp[i] = dp[i - 1] * 2 % mod; }}int main() { int T, n, k; init(); scanf("%d", &T); while(T--) { memset(num, 0, sizeof(num)); scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%d", &k); num[k]++; } LL sum = 0; for(int i = 0; i <= (1 << 10); i++) { //枚举每一种状态 LL ans = 1, cnt = 0; for(int j = 0; j < 10; j++) { //ai取值比较小,二进制枚举状态 if((1LL << j) & i) { cnt = cnt + j + 1; ans = ans * (dp[num[j + 1]] - 1); ans %= mod; } } sum = (sum + cnt * ans) % mod; } printf("%lld\n", sum); } return 0;}
阅读全文
0 0
- HPU 1010: QAQ的序列价值【状压&组合数学】
- 【hpu oj 1010 QAQ的序列价值 [数学、状态压缩]】
- hpuoj-1010-QAQ的序列价值【状压】【数学组合】
- 【HPU 1010 QAQ的序列价值】
- 【hpu oj 1011 QAQ的序列组合 [组合数学]】
- HPU 1010: QAQ的序列价值 【状态压缩】
- hpu-【1011: QAQ的序列组合】
- 【HPU 1011 QAQ的序列组合】
- 【HPU 1009 QAQ的区间价值】
- 【HPU 1008 QAQ的矩阵价值】
- 【HPU 1046 QAQ的数学问题】+ 思维
- 【hpu oj 1008 QAQ的矩阵价值 思维】
- 【hpu oj 1009 QAQ的区间价值 思维】
- HPU 1046: QAQ的数学问题 【贝祖定理】
- HPU 1410 QAQ & 火星情报局 (数学)
- HPU 1410: QAQ & 火星情报局 ( 数学
- 【HPU】[1731]QAQ的问题
- HPU1009 QAQ的区间价值【数学找规律】
- 高通移动处理器入侵PC 与华硕惠普推千兆LTE上网电脑
- 对话赛灵思:33年老牌芯片厂如何在AI浪潮里新兴业务年增46%
- ofo摩拜合并困局:昔日王者 危机四伏
- ubuntu进入终端
- 微信群控系统源码,微信云控系统源码的升级版,一部手机操作100个微信号的核心源码实现,核心技术架构
- HPU 1010: QAQ的序列价值【状压&组合数学】
- 如何从开发小白到音视频专家
- 互联网安全内容安全及防护
- 百度王海峰:推出燎原计划吸引AI开发者
- 明年三星小米机皇有多强?高通骁龙845五大技术拆解
- 进阶版“阿尔法狗”围棋象棋一起赢 IBM推出POWER9 AI芯片
- Ubuntu16.04 创建桌面快捷方式
- S15面向对象程序设计
- Python爬虫之处理带Ajax、Js的网页