【枚举】抽奖2

目录

题目描述

输入格式

输出格式

输入输出样例

输入 #1

输出 #1

说明/提示

解题思路

目标

分析

代码


题目描述

在一个抽奖箱中放了n张奖券,每张均有唯一编号i,另外奖券上还有一个号码a[i],现在将进行两次抽奖,每次从箱中拿出一个奖券,记录其号码a[i],然后放回箱中继续。问两次抽到的号码和为sum的情况有多少种

输入格式

第一行两个整数n,m 第二行n个整数a[i]

输出格式

一个整数,表示方案总数

输入输出样例

输入 #1

5 7
1 2 3 4 5

输出 #1

4

说明/提示

对于40%的数据0<n<=100

对于100%的数据0<n<=100000,0<a[i]<=100,0<m<=100

两种方案相同,当且仅当第一次的i相同且第二次i相同

解题思路

目标

求两次抽到的号码和为sum的情况有多少种

分析

根据题目中描述的我们已知n张奖券上面的编号,求两次抽到的号码和为sum,我们已知的条件有两个,一个是没涨奖券的编号,一个是号码和为sum,那我们其实是可以依次枚举,判断第一次抽出号码确定的情况下,下一次抽出的号码为sum的情况有几次,那这里有个查询操作,为了方便可以借助桶排序的一个思想,记录一下每个数字出现的次数,把数字作为数组下标,这样当前下标的值就可以记录为数组下标值出现的次数,很方便再枚举的时候查询和我们当前编号累加和为sum。接下来具体的做一下。

1,首先,我们需要定义然后输入两个变量n,sum。n代表奖券的数量,sum保存两次号码累加和的值。

2、定义两个长度为100000的数组,a[100000],f[100000];其中a用来保存n张奖券上的编号,f用来记录每个编号出现的次数,需要初始化为0。

3、使用一个循环n次的for循环,一次输入n张奖券的编号a[i],并且使用数组f记录当前值出现的次数,可以通过数组的下标来做标记f[a[i]]表示a[i]出现的次数

4、定义一个变量ans,用来保存方案总数,初始赋值为0,然后使用一个n次的for循环依次遍历n张奖券,去判断是否有满足两次抽取累加和是sum,首先需要数组值小于等于sum才可能两个累加起来等于sum,因为编号是没有负值的,然后依次把sum-a[i]出现的次数f[sum-a[i]]加到ans上。

5、最后输出ans两次抽到的号码和为sum的情况数。

代码

#include <bits/stdc++.h>
using namespace std;
int main(){int n,sum,a[100000],f[100000]={0};cin >> n >> sum;for(int i=0; i<n; i++){cin >> a[i];f[a[i]]++;}int ans=0;for(int i=0;i<n; i++){if(sum>=a[i]){ans+=f[sum-a[i]]; }}cout << ans;return 0;
}

【枚举】抽奖2(c++)相关推荐

  1. 寒假集训三(暴力枚举)2020.01.02(11题)

    寒假集训三(暴力枚举)id :521 Problem:A 二倍的问题 Description 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍.比如给 ...

  2. 大一寒假培训(三)——暴力枚举及妙用

    大一寒假培训(三) 经过两天的培训之后,第三天也到来了.今天讲的是暴力枚举.好像没什么可讲的(悄咪咪地说) 接下来还是今天的练习 nefu 8 二倍的问题 Description 给定2到15个不同的 ...

  3. c语言枚举法课程设计报告,枚举法的程序实现及优化

    计新明 内容分析 本部分内容是教育科学出版社出版的必修1<数据与计算>第四单元第一节中的内容,整本书的思路是初始数据与计算.编程计算.认识数据.计算与问题解决.数据分析与人工智能,第四章属 ...

  4. 2020年1月2日 林大OJ习题 暴力枚举

    2020年1月2日 暴力枚举 林大OJ 8 二倍的问题 #include <bits/stdc++.h>using namespace std;int main() {int n,i,j, ...

  5. 518抽奖软件-支持扩展屏的实现方法

    518抽奖软件-支持扩展屏的实现方法 在开发518年会抽奖软件( www.518cj.net)的时候,软件需支持扩展屏,电脑屏后台操作,扩展大屏滚动抽奖.主要包括以下三个功能,主窗口全屏化(主屏内). ...

  6. 抽奖工具(Demo_Draw)

    [前言]很早就开始想写博客了,奈何一没时间,二嫌麻烦,一直拖到现在~~作为游戏开发工作了一年多,我想把一些通用的小功能小工具写下来~~偏逻辑方面吧,适合给初入门的萌新看,大佬就别笑话我了哈T^T,我也 ...

  7. 知识星球Lottery分布式抽奖系统项目-Note-问题描述/解决方案/Note/Question

    问题描述 Idea使用Maven Install打包会报错(第一次打大包) 原因分析: Maven模块间不能循环依赖 Q: 什么是循环依赖? 循环依赖就是循环引用:两个或多个bean相互持有对方 ps ...

  8. 抽奖动画_增强您的抽奖动画工作流程

    抽奖动画 If you work on UI/UX design, you may hear a lot about micro-interaction, icon animation, onboar ...

  9. 【C#】枚举_结构体_数组

    最近看C#视频,关于这部分,先看了一遍,又照着敲了一遍,自己敲的过程发现了一些有意思的东西. 枚举:定义一个枚举类型的变量,这个变量有很多相同类型的值.比如性别Gender这个变量可以有男和女这两个值 ...

最新文章

  1. 做项目遇到问题 2 AWS NLP 剽窃RuntimeError: size mismatch, m1: [10 x 3], m2: [2 x 10]检测部署报错
  2. Android踩坑日记:监听软键盘多次调用和刷新系统相册和获取所有相片
  3. webservice xsd.exe根据xml生成xsd。然后根据xsd生成java bean
  4. Linux 内存管理 | 物理内存管理:物理内存、内存碎片、伙伴系统、slab分配器
  5. java语言 编译原理_【Java学习】深入分析Java的编译原理
  6. 计算机技术基础 VB 答案,《计算机技术基础(VB)》武汉理工大学20春作业一
  7. 写给准备学习Linux的人
  8. 咨询的真相5:咨询业的“前世今生”
  9. 更改win7脱机文件夹位置
  10. 51单片机学习总结(七)红外通信和DS18B20
  11. iPhone配置实用工具介绍
  12. ASO优化|五步解锁关键词选择优化正确姿势!
  13. 伸展树(Splay)
  14. VBA运行将多个excel的矩阵类型数据转为向量数据
  15. android2.1源代码结构
  16. 你应该使用什么语言开发App?
  17. 2020电赛省赛实战(二)ADS1292心电检测仪
  18. 【深度学习】TensorFlow系统架构和设计理念
  19. Virtual Villagers 攻略
  20. DAEMON Tools for mac 虚拟光驱 中文破解版下载

热门文章

  1. 常见信息安全威胁(病毒等)
  2. java计算机毕业设计留学生交流互动论坛网站源代码+数据库+系统+lw文档
  3. Notes of CFA Level1 READING 6: THE TIME VALUE OF MONEY
  4. 电影海报页面设计Html5,清新简单:以电影为题材的极简海报设计作品
  5. 使用 HD Tune专业版5.50硬盘/固态硬盘使用程序将缩水的u盘恢复至原来的大小
  6. 在嵌入式Linux上使用CF接口的蓝牙模块
  7. 关于检测网络内部私接随身WIFI行为的技术探讨
  8. 主机可以ping通外网,但是虚拟机不可以
  9. WORD上次启动失败,以安全模式启动”的解决方法
  10. git 常用操作总结——基于Gitlab