【[Offer收割]编程练习赛 14 A】小Hi和小Ho的礼物
【题目链接】: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的礼物的更多相关文章
- hihocoder [Offer收割]编程练习赛14	小Hi和小Ho的礼物
		题目1 : 小Hi和小Ho的礼物 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 某人有N袋金币,其中第i袋内金币的数量是Ai.现在他决定选出2袋金币送给小Hi,再选2袋 ... 
- hihocoder [Offer收割]编程练习赛14
		A.小Hi和小Ho的礼物 谜之第1题,明明是第1题AC率比C还要低.题目是求在n个不同重量袋子选4袋,2袋给A,2袋给B,使2人获得重量相同,求问方案数. 我也是一脸懵b...o(n2)暴力枚举发现把 ... 
- hihocoder [Offer收割]编程练习赛14	可疑的记录
		题目3 : 可疑的记录 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi有一棵N个节点的树,编号1-N,其中1号节点是整棵树的根.他把这棵树的N-1条边记录成N-1 ... 
- hihocoder [Offer收割]编程练习赛14 投掷硬币
		题目2 : 投掷硬币 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi有一枚神奇的硬币.已知第i次投掷这枚硬币时,正面向上的概率是Pi. 现在小Hi想知道如果总共投 ... 
- HihoCoder1656 : 前缀后缀查询([Offer收割]编程练习赛39)(字典树+小技巧)
		描述 给定一个包含N个单词的字典:{W1, W2, W3, ... WN},其中第i个单词Wi有具有一个权值Vi. 现在小Hi要进行M次查询,每次查询包含一个前缀字符串Pi和一个后缀字符串Si.他希望 ... 
- hihocoder [Offer收割]编程练习赛14	剑刃风暴
		题目4 : 剑刃风暴 时间限制:20000ms 单点时限:2000ms 内存限制:256MB 描述 主宰尤涅若拥有一招非常厉害的招式——剑刃风暴,“无论是战士还是法师,都害怕尤涅若的武士刀剑技”. 现 ... 
- 【[Offer收割]编程练习赛14 D】剑刃风暴(半径为R的圆能够覆盖的平面上最多点数目模板)
		[题目链接]:http://hihocoder.com/problemset/problem/1508 [题意] [题解] 求一个半径为R的圆能够覆盖的平面上的n个点中最多的点数; O(N2log2N ... 
- 【[Offer收割]编程练习赛14 C】可疑的记录
		[题目链接]:http://hihocoder.com/problemset/problem/1507 [题意] [题解] 如果多出来一个的话; 某个人的父亲节点就会变成两个 找到有两个父亲节点的人就 ... 
- 【[Offer收割]编程练习赛 14 B】投掷硬币
		[题目链接]:http://hihocoder.com/problemset/problem/1506 [题意] 中文题 [题解] 这种题是概率DP-. 设f[i][j]表示i个硬币里面有j个正面朝上 ... 
随机推荐
- XHR ajax
			谷歌搜索xhr site:cnblogs.com https://www.cnblogs.com/xiaohuochai/p/6036475.html 在Chrome的network监视中,类型为XH ... 
- POJ3090 Visible Lattice Points 欧拉函数
			欧拉函数裸题,直接欧拉函数值乘二加一就行了.具体证明略,反正很简单. 题干: Description A lattice point (x, y) in the first quadrant (x a ... 
- [Swift通天遁地]七、数据与安全-(7)创建文件浏览器:以可视化的方式浏览沙箱文件
			★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ... 
- DFS知识点
			2019-06-01 11:14:34 加油,坚持!!! 1. 2. 3. 
- SPOJ 1811 SAM 初探
			思路: 一个串建SAM 另一个串在SAM上跑 //By SiriusRen #include <cstdio> #include <cstring> #include < ... 
- android ListView,GridView 设置某一项显示位置
			在项目中有时会用到,当使用 listview 想让它显示某一项,当它又不在前面的位置,可以 使用 //让某一项显示出来(否则可能不在当前) listview.setSelection(positio ... 
- synchronized关键字详解(一)
			synchronized官方定义: 同步方法支持一种简单的策略防止线程干扰和内存一致性错误,如果一个对象对多个线程可见,则对该对象变量的所有读取或写入都是通过同步方法完成的(这一个synchroniz ... 
- Android常用的Dialog对话框用法
			Android的版本有很多通常开发的时候对话框大多数使用自定义或是 Google提供的V4, V7 兼容包来开发保持各个版本的对话框样式统一,所以这里使用的是V7 包里的AlertDialog. im ... 
- Android开发问题-真机调试连接
			出现“no debuggable processes”可以: 1)尝试Tools->android->Enable ADB Intergration使之选中: 2)换一根数据线试试. 初次 ... 
- 设计模式——“signleton”
			那天别人问了我一个问题,关于单例模式的,由于之前了解的都是蜻蜓点水,所以重新复习了一次重新总结. 单例模式的写法总的来说有5种:懒汉,恶汉,枚举,双重校验锁,静态内部类 懒汉 public class ... 
