小Hi和小Ho的礼物
/*描述某人有N袋金币,其中第i袋内金币的数量是Ai。现在他决定选出2袋金币送给小Hi,再选2袋金币送给小Ho,同时使得小Hi和小Ho得到的金币总数相等。他想知道一共有多少种不同的选择方法。具体来说,有多少种下标四元组(i, j, p, q)满足i, j, p, q两两不同,并且i < j, p < q, Ai + Aj = Ap + Aq。例如对于数组A=[1, 1, 2, 2, 2],一共有12种选法:i j p q1 3 2 41 3 2 51 4 2 31 4 2 51 5 2 31 5 2 42 3 1 42 3 1 52 4 1 32 4 1 52 5 1 32 5 1 4输入第一行包含一个整数N。第二行包含N个整数,A1, A2, A3 ... AN。对于70%的数据,1 <= N <= 100对于100%的数据,1 <= N <= 1000, 1 <= Ai <= 1000000输出不同选择的数目。样例输入51 1 2 2 2样例输出12思路:1. 预处理2袋金币的和和某个值X一共有多少种选法,将预处理的结果存在哈希表中2. 一袋金币不能即给小Hi又给Ho.方法:第一袋的选法数目等于有几个袋子的金币与第三袋一样举例:情况1A[1,1,2,2,2]i j 为下标1 31 41 52 3// 2 4 选这两种// 2 5假设小Hi为下标 1,3情况2:A[2,2,2,2,2]i j1 2 1 31 41 52 32 42 5// 3 4 选这三种// 3 5// 4 5假设小Hi为下标 1,2所以我们预处理cnt1[X]表示包含X枚金币的袋子数
*/
#include <iostream>
#include <unordered_map>
int n, a[1000];
long long ans = 0;
using namespace std;
unordered_map<int, int> cnt1, cnt2;
int main()
{cin >> n;for (int i = 0; i < n;i++){cin >> a[i];cnt1[a[i]]++;}for (int i = 0; i < n;i++){for (int j = i + 1; j < n;j++){cnt2[a[i] + a[j]]++;}}for (int i = 0; i < n;i++){for (int j = i + 1; j < n;j++){//不同情况下容斥原理的具体算法if (a[i]!=a[j]){ans += cnt2[a[i] + a[j]] - cnt1[a[i]] - cnt1[a[j]] + 1;}else{ans += cnt2[a[i] + a[j]] - cnt1[a[i]] - cnt1[a[j]] + 3;}}}cout << ans << endl;
}
小Hi和小Ho的礼物相关推荐
- 从高排到低变成小楼梯儿歌_【课程采风】古运萌宝安全小知识之小剪刀的秘密...
这么漂亮的剪纸是怎么做出来的呢? 是用剪刀剪出来的,我在南长街看过,有个老奶奶能用剪刀剪出这些漂亮的剪纸呢! 那我们也来试着用剪刀剪纸吧!可是小朋友们应该怎样安全地使用剪刀呢?古运实幼中班宝贝们有话说 ...
- python开发微信小程序-微信小程序开发:python+sanic 实现小程序登录注册
开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步.这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案. 微信小程 ...
- 你能用微信小程序打开小程序了【附开发方法】
6月21日晚间,微信小程序再次迎来升级:小程序可以打开小程序了,同一个公众号下关联的10个同主体小程序和3个非同主体小程序之间,可以调用接口直接相互跳转.微信客户端6.5.9及以上版本支持.另外门店小 ...
- [小程序]微信小程序登陆并获取用户信息
1.小程序js端调用框架登陆API,获取到一个临时code,拿着这个code去调用自己的服务端接口 2.在自己的服务器端,使用app_id app_secrect code可以获取到用户的openid ...
- 一队老耗子,每个月都生一对小耗子,小耗子长3个月,第四个月开始变成老耗子开始生, // 假设所有耗子都不死,请问20个月之后共有多少只耗子?...
一队老耗子,每个月都生一对小耗子,小耗子长3个月,第四个月开始变成老耗子开始生, 假设所有耗子都不死,请问20个月之后共有多少只耗子? public class 计算老鼠数量 {public stat ...
- Div1 小A抓小B tarjan双连通分量缩点+dfs
题目描述 小A和小B在一个无向图G上进行一个游戏.图G是连通的,有n个点,n条边,无重边,无自环,结点编号为1~n.游戏开始前小A在结点x,小B在结点y(x≠y).游戏开始后,小A和小B轮流进行移动( ...
- 小课堂?小视频?小商店?
今天,没有什么特别内容可更新,就来随便聊聊吧. 01 雄雄的小课堂 这是一个公众号,内容主要有两大类. 一类是以分享编程技术为主,一方面是为了提升自己,另一方面也是为了帮助别人,希望阅者有益,平时也会 ...
- matlab小波脊线,小波脊线提取,模极大值法。运行的结果不太对,代码有些地方我也没完全看懂...
本帖最后由 1393107100 于 2019-5-1 11:10 编辑 clear,clc close all %%%%%% 小波变换 %%%%%%%%%%%%%%%% fs=1024; t=1/f ...
- 酷客多小程序实现小程序之间跳转功能,让小程序玩出新花样
自从微信公布可以实现小程序之间相互跳转功能以来,酷客多小程序(http://www.kukeduo.cn)紧跟脚步,就在上周推出了小程序跳转小程序的端口,对于拥有多个小程序的企业来说,这个新功能的推出 ...
最新文章
- .net 应用迁移到Mono 工具 (Moma)
- springmvc+mybatis,在mybatis逆向工程的基础上使用模板自动生成controller层代码
- Android Linker学习笔记
- Spring整合ActiveMQ完成消息队列MQ编程
- JQuery------各种版本下载
- 怎么让电脑屏幕一直亮着_电视机指示灯亮不开机怎么办 电视机故障及维修介绍【详解】...
- 20172325 2018-2019-1 《Java程序设计》第二周学习总结
- 一个小厂前端 Leader 如何筛选候选人?
- 出让执行权:Task.Yield, Dispatcher.Yield
- .NET跨平台之旅:博问站点迁移至ASP.NET Core on Linux并发布上线
- Android7.0以后的ninja编译系统
- 一个简单的SQL最优写法讨论(1)
- STC官方软件波特率计算器使用方法
- 使用GWmodel进行GWR模型相关运算
- 最好用的屏幕分辨率修改器:SwitchResX for Mac
- 【华为机试真题 Python实现】分苹果
- Unity资源分享网站——记录
- 网络安全知识竞赛(国家信息安全水平考试NISP)模拟题1
- DLP Lightcrafter™ 4500 EVM常见问题答疑
- C++复习1:一些概念