Sequence [组合数学]

时间限制: 3 Sec  内存限制: 128 MB 提交: 138  解决: 52 [提交][状态][讨论版]

题目描述

在某个夜黑高的晚上,!!!,原谅我编不下去了

HS(Handsome)的Ocean在纸上写下$N$个整数,Ocean把它定义为$O$序列。

Ocean认为一个序列的价值的是:序列中不同元素个数。

现在他想知道$O$序列中所有子序列的价值之和

比如说:序列$(1, 1, 2, 2)$价值为$2$,因为序列中有$1$和$2$两个不同元素。 比如序列$(1, 1, 1)$,共有$7$个子序列,$(1)、(1)、(1)、(1, 1)、(1, 1)、(1, 1)、(1, 1, 1)。$价值之和为$7$。

输入

第一行输入一个整数$T$,代表有$T$组测试数据。 每组数据占两行,第一行输入一个整数$N$,代表序列元素个数。 接下来一行输入$N$个整数$a_i$。
注:$1 <= T <= 10000,1 <= N <= 50,1 <= a_i <= 10。$

输出

对每组测试数据,输出一个结果代表所有子序列价值之和。由于结果会很大,请用$long\,long$(%lld)。

样例输入

4
3
1 1 1
4
1 1 1 1
4
10 10 10 8
20
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10

样例输出

7
15
22
7864320

来源

CZY

思路:每个元素提供的价值是2^k - 1,k是这个元素出现的次数;那么我们根据元素值来解决问题,假设我们选的是5和7,

现在有一组 5 5 5 7 7 7 7,那么选的这两个数提供的价值就是V5 * V7;

那么我们现在只需要找出元素值的全排列的选择即可,这个可以用位运算;

代码:(注意java里面跟c有点不一样,要想是java形式,要是1L<<k)

import java.util.Scanner;public class hpu1192 {static private Scanner cin;static{cin = new Scanner(System.in);}public static void main(String[] args) {
//        System.out.println((long)(1L << 50));int T, N, temp;int[] a = new int[11];T = cin.nextInt();while(T-- > 0){N = cin.nextInt();for(int i = 0; i <= 10; i++){a[i] = 0;}for(int i = 0; i < N; i++){temp = cin.nextInt();a[temp]++;}long ans = 0;for(int i = 1; i < (1 << 10); i++){int cnt = 0;long sum = 1;for(int j = 0; j < 10; j++){if((i & (1 << j)) != 0){cnt++;sum *= (long)((1L << a[j + 1]) - 1);}}ans += (long)sum * cnt;}System.out.println(ans);}}
}

Sequence(组合数学,集合不同元素的个数)相关推荐

  1. 输入两个由整型数构成的集合(元素个数均为5)分别放到数组A和B中,求这两个集合的交集(交集的元素由两个集合中的相同元素构成),最后输出交集中的元素。

    [问题描述]输入两个由整型数构成的集合(元素个数均为5)分别放到数组A和B中,求这两个集合的交集(交集的元素由两个集合中的相同元素构成),最后输出交集中的元素,要求在主函数中输入A和B数组,并输出交集 ...

  2. 离散数学反对称关系_【离散数学】1.2&1.3集合与元素,集合与集合之间的关系...

    离散数学是编程人员进阶的必修科目,是计算机专业学生的基础课程之一,多为理论性知识,较抽象. [离散数学]第一章(集合论基础)的小节主要有: 1.1集合的定义和表示 1.2集合与元素的关系 1.3集合与 ...

  3. python简单小案例列表_python计算列表内各元素的个数实例

    python计算列表内各元素的个数实例 如下所示: list = [1,2,3,4,5,6,7,5,4,3,2,12] set = set(list) dict = {} for item in se ...

  4. python统计excel出现次数_Excel-统计元素出现次数和统计不重复元素的个数

    在实际工作中,我们经常遇到这样的情况,给你一个几千条几万条记录的表格,让你统计每个元素出现的次数,或者是让你统计一下总计有多少个不重复的元素.现在来简单介绍一下怎么处理这个问题,方法学了一次,就可以使 ...

  5. Excel-统计元素出现次数和统计不重复元素的个数

    在实际工作中,我们经常遇到这样的情况,给你一个几千条几万条记录的表格,让你统计每个元素出现的次数,或者是让你统计一下总计有多少个不重复的元素.现在来简单介绍一下怎么处理这个问题,方法学了一次,就可以使 ...

  6. Java创建数组的三种方式 (以及length方法是否能获取数组中元素的个数)

    Java创建数组的三种方法 import java.util.Arrays; public class Sum { public static void main(String[] args){ in ...

  7. python集合的元素可以是_python集合入门须知

    刚接触Python编程语言的时候,会觉得怎么那么多概念要记,也会觉得很难学.下面是关于python集合的相关概念,希望能帮助你在学习python语言时,更上一层楼. 一.集合概述 集合(set):把不 ...

  8. python中集合的元素可以是任意数据类型_详解Python集合数据类型

    本篇介绍Python集合数据类型.集合不同于列表和元组类型,集合存储的元素是无序且不能重复的,同数学中的集合一样,集合可以执行集合的并.交.差运算.通过本篇的学习,可以达成如下目标. ● 掌握集合数据 ...

  9. python实现二维tensor对应列相同元素的个数

    python实现二维tensor对应列相同元素的个数 例子: t1 = torch.tensor([[1,3,5],[2,4,6]] t2 = torch.tensor([[2,3,5],[2,3,6 ...

最新文章

  1. 百度地图JavaScript API自定义覆盖物、自定义信息窗口增删时的显示问题
  2. R语言相关关系可视化函数梳理(附代码)
  3. [caffe(一)]使用caffe训练mnist数据集
  4. 工作所用的模块回滚脚本
  5. Java笔记-基于Spring Boot的SOAP双向SSL认证及WS-Security
  6. 【JVM】JVM 内联优化
  7. ios 横竖屏切换总结
  8. 斯坦福大学的Gss Audio Codec 调试分析
  9. cognos数据源的配置
  10. android字体和可免费商用的字体
  11. 斗鱼弹幕服务器未响应,斗鱼看不到弹幕的解决方法步骤
  12. 气球java游戏,游戏 | 最适合春季玩气球的这12种玩法你玩过吗?
  13. 无线Wifi密码之暴力破解篇(WPA)
  14. 量化基金投资之Alpha策略简介
  15. 如何批量将 Txt 文本文件转换为 jpeg、png、bmp 图片
  16. 在Activity中获取另一个XML文件的控件
  17. java飞机大战设计收获_飞机大战编写以及Java的面向对象总结
  18. 几年前之所预言,其人不死言之依然
  19. sublime配置python开发环境以及遇到的坑(附终极解决方案)
  20. 对接阿里云opensearch

热门文章

  1. 3. SQL Server数据库状态监控 - 可用空间
  2. 2011年中国程序员薪水调查报告
  3. 百度2011实习生招聘笔试题
  4. 腾讯开放或将触发行业新一轮创业热潮
  5. 怪异的StackOverflowException异常
  6. 在WEBSERVICE学习中遇到的问题
  7. Android UI进阶之旅9 Material Design之沉浸式设计
  8. canvas画柱状图 和饼图
  9. 2016百度之星 - 初赛(Astar Round2A)Gym Class(拓扑排序)
  10. web设计经验一 提升移动设备响应式设计的8个建议