嵊州D2T1

“我只是来打个电话”

精神病院有一个这样的测试。

给出一个正整数集合,集合中的数各不相同,然后要求病人回答: 其中有多少个数,恰好等于集合中另外两个(不同的)数之和?

回答正确的人,即可以出院。

但是,条件是苛刻的—— 一秒。

直到变成废墟前,也没有人从中逃出。

但是如今不同了。

对吧?

Input

共两行,第一行包含一个整数 n,表示测试题中给出的正整数个数。

第二行有 n 个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。

Output

一个整数,表示测验题答案。

Examples

telephone.in telephone.out

4 1 2 3 4 2

Notes

对于所有数据,满足 3 ≤ n ≤ 5000,给出的正整数不超过 10000。

Task1[50%]

n ≤ 100

Task2[100%]

无特殊限制


Solve!

这道题,我想出来的方法还是蛮多的。

O(n^3)的暴力枚举(10分!)

// 我的方法
sort(jh+,jh+n+,cmp);//从小到大sort排序
for(int k=;k<=n;k++)因为k要是两个数的和,所以它至少是第三个数吧?
{
for(int i=;i<=k;i++){
if(jh[i]==jh[k]) continue;
for(int j=i+;j<=k;j++){
if(k==j||jh[i]==jh[j]) continue;
if(jh[k]==jh[i]+jh[j]) out++;
}
} }

O(log2 n/*???*/)的二分法(后来有个不知名的原因做不出来)

我就直接在这里说最后的AC方法吧

要用两个数组:

int jh[MAXN], f[MAXN];

其中jh(集合)就是用来存你输入的数组的

f则是用来存有可能的和的(用1/0表示)

step1

两层循环,枚举所有的两数之和

step2

再从1开始扫描,遇到1(true)就out++;

没了!

#include<bits/stdc++.h>
using namespace std;
const int MAXN=;
int jh[MAXN], f[MAXN];
//bool cmp(int x,int y){return x<y?true:false;}
int main(){
//freopen("telephone.in","r",stdin);
//freopen("telephone.out","w",stdout);
int n; scanf("%d",&n);
int out=;
int jh[n+];
for(int i=;i<=n;i++) scanf("%d",&jh[i]);
bool f[MAXN];
memset(f,,sizeof(f));
for(int i=;i<=n;i++)
for(int j=;j<=i-;j++)
f[jh[i]+jh[j]]=;
for(int i=;i<=n;i++)
if(f[jh[i]]) out++;
printf("%d",out);
return ;
}

OK!

嵊州D2T1 “我只是来打个电话”的更多相关文章

  1. nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证

    http模块内部封装了http服务器和客户端,因此Node.js不需要借助Apache.IIS.Nginx.Tomcat等传统HTTP服务器,就可以构建http服务器,亦可以用来做一些爬虫.下面简单介 ...

  2. Mono for Android—初体验之“电话拨号器”

    1.Main.axml文件: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmln ...

  3. Android无需申请权限拨打电话

    Android打电话有两种实现方法: 第一种方法,拨打电话跳转到拨号界面.源代码如下: Intent intent = new Intent(Intent.ACTION_DIAL); Uri data ...

  4. ContentProvider中央档案馆,以及获取联系人电话的示例

    Android官方文档介绍的数据存储方式共有五种,sqlite,SharedPreferences,网络存储,外储存储,文件存储,但是这些数据都无法进行共享,那么我们就引入了今天的主角:Content ...

  5. [LeetCode] Design Phone Directory 设计电话目录

    Design a Phone Directory which supports the following operations: get: Provide a number which is not ...

  6. 【原】iOS学习之三种拨打电话方式的比较

    拨打电话小编从网上找到三种,在这里做一些总结和比较 1.基本使用 NSString *str = [[NSMutableString alloc] initWithFormat:@"tel: ...

  7. 使用JAVA编写电话薄程序,具备添加,查找,删除等功能

    //该程序需要连接数据库.根据word文档要求所有功能均已实现.//大部分方法基本差不多,//在查询修改的时候能输出 最大ID号 和最小ID号,并且可以对输入的ID号进行判断是否存在(具体方法请查看 ...

  8. 拨打电话tel: 跳转到邮件mailto:(html)

    拨打电话 <a href="tel://0571866000">0571-866000</a> 跳转到邮件 <a href="mailto: ...

  9. [Android]电话拨号器开发

    继续今天的Android,经过昨天大体了解了Android开发的一些基本文件结构,今天来做一个电话拨号器! 预期达到的效果 实现过程 首先还是按照昨天第一篇教程,新建一个项目叫PhoneCall的An ...

随机推荐

  1. QT如何编译出带调试信息的qtwebkit库

    因为在编译QT的时候默认是不编译成带调试信息的qtwebkit库的,不论如何设置参数都是没有用的.后面在一博客中查找到相关信息   1.编译带debug 信息的webkit 库 注释或者删除qt-ev ...

  2. Java Policy

    # What The policy for a Java™ programming language application environment (specifying which permiss ...

  3. wpf怎么使用WindowsFormsHost(即winform控件)

    原文:wpf怎么使用WindowsFormsHost(即winform控件) 使用方法: 1.首先,我们需要向项目中的引用(reference)中添加两个动态库dll,一个是.NET库中的System ...

  4. liunx 详细常用操作

    图片来自: http://www.cnblogs.com/zhangsf/archive/2013/06/13/3134409.html 公司新员工学习有用到,Vim官网的手册又太大而全,而网上各方资 ...

  5. WPF中获取鼠标相对于屏幕的位置

    原文:WPF中获取鼠标相对于屏幕的位置 WPF中获取鼠标相对于屏幕的位置                                   周银辉WPF编程时,我们经常使用Mouse.GetPosi ...

  6. 深入理解SQL Server 2005 中的 COLUMNS_UPDATED函数

    原文:深入理解SQL Server 2005 中的 COLUMNS_UPDATED函数 概述 COLUMNS_UPDATED函数能够出现在INSERT或UPDATE触发器中AS关键字后的任何位置,用来 ...

  7. 在UWP的XAML中使用原始类型

    问题: I'm trying to access the system namespace for StaticResource variables in XAML on UWP. Here's (m ...

  8. Android零基础入门第84节:引入Fragment原来是这么回事

    随着大众生活水平的提高,再加上移动互联网的迅速发展,几乎每个人都至少拥有一台搭载Android系统的移动设备.Android设备的多样性给我们带来了很大的便捷,各Android设备拥有不同分辨率和不同 ...

  9. python常用数据结构(2)

    1.有名字的元组——namedtuple >>> from collections import namedtuple >>> Point = namedtuple ...

  10. DNS查询命令

    dig(domain information groper)是一个在类Unix命令行模式下查询DNS,包括NS记录,A记录,MX记录等相关信息的工具 一.简单介绍使用dig命令查询DNS的方法 dig ...