【题目链接】:http://hihocoder.com/problemset/problem/1505

【题意】

【题解】



考虑Meet in the middle.

因为两个数的和不是很大;

直接用数组搞hash就好;

for (int i = 1;i <= n)
for (int j = i+1;j<= n;j++)
cnt[a[i]+a[j]]++;

弄出散列表

然后再两重for 循环枚举另外两个元组

k,l

但是

不能仅仅靠

cnt[a[k]+a[l]来递增答案;

因为可能有其他的元素t

使得a[t]+a[k]==a[k]+a[l]

或者是a[l]+a[t]==a[k]+a[l]

要把这种情况排除掉;

具体的

记录a[l]有多少个,a[k]有多少个;

然后把这种情况剔除掉就好了.





【Number Of WA】



1



【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 1100; LL a[N];
int n,dic1[1009000],dic[2009000]; int main()
{
//freopen("F:\\rush.txt","r",stdin);
ios::sync_with_stdio(false);
cin >> n;
rep1(i,1,n)
cin >> a[i],dic1[a[i]]++;
rep1(i,1,n)
rep1(j,i+1,n)
dic[a[i]+a[j]]++;
LL ans = 0;
rep1(i,1,n)
rep1(j,i+1,n)
{
int aa = dic1[a[j]],bb = dic1[a[i]];
int temp1 = aa-1,temp2 = bb-1;
if (a[i]==a[j]) temp1--,temp2--;
ans=ans+dic[a[i]+a[j]]-temp1-temp2-1;
}
cout << ans << endl;
//printf("\n%.2lf sec \n", (double)clock() / CLOCKS_PER_SEC);
return 0;
}

【[Offer收割]编程练习赛 14 A】小Hi和小Ho的礼物的更多相关文章

  1. hihocoder [Offer收割]编程练习赛14 小Hi和小Ho的礼物

    题目1 : 小Hi和小Ho的礼物 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 某人有N袋金币,其中第i袋内金币的数量是Ai.现在他决定选出2袋金币送给小Hi,再选2袋 ...

  2. hihocoder [Offer收割]编程练习赛14

    A.小Hi和小Ho的礼物 谜之第1题,明明是第1题AC率比C还要低.题目是求在n个不同重量袋子选4袋,2袋给A,2袋给B,使2人获得重量相同,求问方案数. 我也是一脸懵b...o(n2)暴力枚举发现把 ...

  3. hihocoder [Offer收割]编程练习赛14 可疑的记录

    题目3 : 可疑的记录 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi有一棵N个节点的树,编号1-N,其中1号节点是整棵树的根.他把这棵树的N-1条边记录成N-1 ...

  4. hihocoder [Offer收割]编程练习赛14 投掷硬币

    题目2 : 投掷硬币 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi有一枚神奇的硬币.已知第i次投掷这枚硬币时,正面向上的概率是Pi. 现在小Hi想知道如果总共投 ...

  5. HihoCoder1656 : 前缀后缀查询([Offer收割]编程练习赛39)(字典树+小技巧)

    描述 给定一个包含N个单词的字典:{W1, W2, W3, ... WN},其中第i个单词Wi有具有一个权值Vi. 现在小Hi要进行M次查询,每次查询包含一个前缀字符串Pi和一个后缀字符串Si.他希望 ...

  6. hihocoder [Offer收割]编程练习赛14 剑刃风暴

    题目4 : 剑刃风暴 时间限制:20000ms 单点时限:2000ms 内存限制:256MB 描述 主宰尤涅若拥有一招非常厉害的招式——剑刃风暴,“无论是战士还是法师,都害怕尤涅若的武士刀剑技”. 现 ...

  7. 【[Offer收割]编程练习赛14 D】剑刃风暴(半径为R的圆能够覆盖的平面上最多点数目模板)

    [题目链接]:http://hihocoder.com/problemset/problem/1508 [题意] [题解] 求一个半径为R的圆能够覆盖的平面上的n个点中最多的点数; O(N2log2N ...

  8. 【[Offer收割]编程练习赛14 C】可疑的记录

    [题目链接]:http://hihocoder.com/problemset/problem/1507 [题意] [题解] 如果多出来一个的话; 某个人的父亲节点就会变成两个 找到有两个父亲节点的人就 ...

  9. 【[Offer收割]编程练习赛 14 B】投掷硬币

    [题目链接]:http://hihocoder.com/problemset/problem/1506 [题意] 中文题 [题解] 这种题是概率DP-. 设f[i][j]表示i个硬币里面有j个正面朝上 ...

随机推荐

  1. Android 体系结构介绍

    转自:http://blog.sina.com.cn/s/blog_4bc996c40100fawo.html 第一.操作系统层(OS)第二.各种库(Libraries)和Android 运行环境(R ...

  2. JSP-Runoob:JSP 点击量统计

    ylbtech-JSP-Runoob:JSP 点击量统计 1.返回顶部 1. JSP 点击量统计 有时候我们需要知道某个页面被访问的次数,这时我们就需要在页面上添加页面统计器,页面访问的统计一般在用户 ...

  3. bzoj2194

    http://www.lydsy.com/JudgeOnline/problem.php?id=2194 卷积... 卷积并不高深,其实卷积就是两个多项式相乘的系数,但是得满足一点条件,就是f[n]= ...

  4. Redis学习和应用记录(1)--介绍和安装

    Redis是一个开源的分布式缓存框架,它也常被理解为数据结构服务器,因为它包含丰富的数据类型,如strings, hashes, lists, sets, sorted sets, bitmaps a ...

  5. 谈谈windows下克隆的坑

    本来在mac里一个项目里新建了一个I/O的文件夹. 当时就直接被系统自动改成了I:O.   本来也没多在意,感觉也不是什么大事. 这是push到GitHub上的样子. 当时没多想,感觉没什么问题,就是 ...

  6. U盘在电脑上安装CentOS 7 系统过程详解

    U盘制作CentOS系统启动盘 在电脑上下载并安装UltraISO软件,如百度云:http://pan.baidu.com/s/1hrGtvEG 打开UltraISO软件,找到CentOS.iso的映 ...

  7. StreamingListener技术点

    以下是对StreamingListene的研究,由于比较简单,故只贴代码,不做解释 /** * Created by gabry.wu on 2016/5/27. * 实现StreamingListe ...

  8. JavaScript Date 日期操作

    在前端工程师的道路上,可能有时候需要与时间来打交道,下面我们来看一下日常对日期的操作,今天我们介绍的是Day.js插件 Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Mom ...

  9. longpo的回文

    啊...比赛的时候输入打错了,结束之后还照着题解把DP部分重构了一遍然而还是WA...样例都没过,然后直接输了-1 明显的DP...而且数据范围这么小,显然怎么搞都可以... 而且这样的回文的DP是很 ...

  10. [转]linux uniq 命令详解

    转自:http://blog.csdn.net/tianmohust/article/details/6997683 uniq 命令   文字 uniq 是LINUX命令 用途 报告或删除文件中重复的 ...