【[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个正面朝上 ...
随机推荐
- Silverlight访问数据库大全(转)
Silverlight访问数据库大全 Silverlight访问数据库大全 Posted on 2010-06-13 17:25 moss_tan_jun 阅读(1917) 评论(0) 编辑 收藏 最 ...
- B2242 [SDOI2011]计算器
这个题就是把三个数论基础合在了一起,算是一道比较全面的题. 1的时候就是快速幂 2的时候是exgcd求逆元,特殊的,只有两数互质才有逆元. 3就是bsgs啦,还是不太熟 题干: Description ...
- Java开源JSP标签库
01displytag 与Struts结合使用最出名的一个tag主要是显示表格数据很漂亮.完善. 02cewolf tag 用来在web上显示复杂图形报表的一个jsp tag. 03Loading T ...
- 简单理解jsonp原理
对于javascript程序员来说,发送ajax请求获取后台数据然后把数据和模板拼接成字符串渲染回DOM实现无刷新更新页面这样的操作可谓是轻车熟路.但众所周知,ajax有一个不好,就是不能跨域传输数据 ...
- [Apple开发者帐户帮助]九、参考(3)支持的功能(iOS)
iOS应用程序可用的功能取决于您的程序成员身份. 能力 ADP 企业 Apple开发者 访问Wifi信息 应用程序组 Apple Pay 相关域名 自动填充凭据提供程序 背景模式 ...
- [Swift通天遁地]七、数据与安全-(3)Cocopods的安装和开源类库对JSON的解析
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- [Swift通天遁地]八、媒体与动画-(4)给相机添加CoreImage滤镜效果
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Elasticsearch如何做到亿级数据查询毫秒级返回?
阅读本文大概需要 6 分钟. 如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有 ...
- $CF1141B Maximal Continuous Rest$
告诉你一天n件事情 a[i]为1是休息 a[i]为2是工作 求最长连续的休息时间(即最长的1 可以作为环状来求.(即环状最长的1 这题就可以用前缀和贪心等什么操作.. 然后用\(ans1ans2\)瞎 ...
- js 中的定时器
在js中的定时器分两种:1.setTimeout() 2.setInterval() 1.setTimeOut() 只在指定时间后执行一次 /定时器 异步运行 function hello(){ al ...