嵊州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. Java Policy

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

  2. 解决iconv函数无法转换某些中文的问题

    原文: 解决iconv函数无法转换某些中文的问题 请先看以下代码,这个页面是GB2312编码的: $str = '陶喆';echo 'gb2312-'.$str;echo '<br />' ...

  3. SQLSERVER 数据库备份脚本-支持多库备份

    原文:SQLSERVER 数据库备份脚本-支持多库备份 <pre name="code" class="sql">--变量定义 DECLARE @b ...

  4. 通过NLayer和NAudio转换MP3成WAV

    NuGet安装: Install-Package NLayer.NAudioSupport 示例代码: using Microsoft.Win32; using NAudio.Wave; using ...

  5. redis入门笔记(3)

    本篇文章介绍几个redis的应用场景. 1.取最新N个数据的操作 –比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数 ...

  6. Android零基础入门第45节:GridView简单使用

    原文:Android零基础入门第45节:GridView简单使用 前面一共用了8期来学习ListView列表的相关操作,其实学习的ListView的知识完全适用于AdapterView的其他子类,如G ...

  7. rem.js移动布局实例教程

    最近想买需要开发微站,微信公众号内嵌入的移动web,总结方法可以使用css3直接使用百分比布局,也可以使用bootstrap做响应式布局等多种方法,个人感觉看项目需要,笔者使用rem.js进行移动前端 ...

  8. python的实用函数

    >>> file=open('txt.txt','a') >>> print >> file,'hello,world' >>> fi ...

  9. python 方法无法在线程中使用(附python获取网络流量)

    在python中,定义一个方法,直接调用可以,但是创建一个线程来调用就可能导致失败.这种现象多出现在使用com对象进行系统操作时,而且是以线程的形式调用. 异常提示如下:syntax error.WM ...

  10. 源码解读·RT-Thread多任务调度算法

    *本文依据RT-Thread当时最新版本4.0.1版本源码 RT-Thread操作系统是一款基于优先级和时间片轮转的多任务实时操作系统.其调度算法采用256个优先级,并支持相同优先级的任务存在.不同优 ...