问题标题: 结贴

0
0
已解决
李鑫羽
李鑫羽
初级光能
初级光能

1772   A - B = C经验值:800

题目描述 Description

给定 n 个数 ai,以及一个正整数 c ,问有多少对 i j,满足 ai - aj = c

输入描述 Input Description

第 1 行:整数 n 和 c
第 2 至 n+1 行:每行包含一个整数 ai

输出描述 Output Description

输出能满足 ai - aj = c 的数的对数

样例输入 Sample Input

5 3 2 1 4 2 5

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

n <= 200000,所有数字保证在32位有符号整型内。

int n,c,a[200010],t=0,s;
    cin>>n>>c;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    sort(a+1,a+1+n);
    for(int i=1;i<=n;i++){
        if(a[i]>c){
            s=i;
            break;
        }
    }
    for(int i=s;i<=n;i++){        
        for(int j=1;j<=s;j++){
            if(a[i]-a[j]==c){
                t++;
                cout<<a[i]<<" "<<a[j]<<" "; 
            }
        }
    }
    cout<<t;

李鑫羽在2020-07-19 20:44:59追加了内容

@刘乐宸 

  • #include<iostream>
  • using namespace std;
  • int main(){
  • int n,c,a[200010],t=0;
  • cin>>n>>c;
  • for(int i=1;i<=n;i++){
  • cin>>a[i];
  • }
  • for(int i=1;i<=n;i++){
  • if(a[i]>=c){
  • for(int j=1;j<=n;j++){
  • if(a[i]-a[j]==c){
  • t++;
  • }
  • }
  • }
  • }
  • cout<<t;
  • return 0;
  • }
  • Time Limit Exceeded:80分,而且不要网址
李鑫羽在2020-08-02 18:11:41追加了内容

发代码或找错

李鑫羽在2020-08-16 19:32:07追加了内容

李鑫羽在2020-08-16 20:22:36追加了内容

李鑫羽在2020-08-23 10:09:49追加了内容

李鑫羽在2020-09-07 19:36:39追加了内容

李鑫羽在2020-10-02 10:28:31追加了内容

结贴

李鑫羽在2020-10-02 10:28:44追加了内容

结贴

李鑫羽在2020-10-02 10:28:55追加了内容

结贴

李鑫羽在2020-10-02 10:29:41追加了内容

  1

李鑫羽在2020-10-02 10:29:49追加了内容

  1

李鑫羽在2020-10-02 10:29:56追加了内容

  1


0
0
黄子扬
黄子扬
初级天翼
初级天翼

用桶啊孩子,你这不t见鬼

0
杜智宸
杜智宸
中级光能
中级光能

不用这么麻烦

  • int n,c,a[200001],b[10000000],num=0;
  • cin>>n>>c;
  • for(int i=1;i<=n;i++){
  • cin>>a[i];
  • }
  • for(int i=1;i<=n;i++)
  • b[a[i]+c]++;
  • for(int i=1;i<=n;i++)
  • num+=b[a[i]];

输出num即可,这题要用桶

0
0
朱优扬
朱优扬
中级天翼
中级天翼

枚举我掌握的不行(我看不出啥错)

0
0
李鑫羽
李鑫羽
初级光能
初级光能

在线等,急

李鑫羽在2020-07-21 14:57:31追加了内容

有人吗

0
0
丁海洋
丁海洋
中级守护
中级守护

e~看了楼上说的种种发现好像不用那么难吧!我来告诉你一点小思路吧:你可以先sort这个数组(头文件别忘了),再去循环,你要注意j不是从1开始!!!!!j它应该是从i+1开始的,因为j从1开始会有很多重复的,会导致超时!!!然后数组已经从小到大排序了,这样我们就可以用后面一个数(即a[j])减去前面一个数(即a[i]),因为数组已经从小到大排序了,后面的数是比前面的数大的,所以你不用担心减成负数,然后我们可以在加一个else if,可以减少运行时间,else if里呢就是说如果后面的数减前面的数已经大于结果了,那就可以直接break了,因为后面的数会比他更大,再减这个数肯定还是比结果大的

    望采纳~

0
刘乐宸
刘乐宸
新手天翼
新手天翼

枚举结果,用个双重循环,指针枚举。

求采纳

0
包涵宇
包涵宇
中级天翼
中级天翼

你算一下时间复杂度

O(n2)

10的10次方,超时!

所以要用桶!
(不会的话私聊,QQ:3088515022)*

0
0
王文博
王文博
缔造者之神
缔造者之神

看看你的双重循环,不超时就怪。

0
0
沙宸安
沙宸安
高级启示者
高级启示者

这个报错信息一般会存在于集中情况:

1、除以0

2、下标访问越界

3、系统栈空间调用崩溃

4、运输量过大

0
0
王俊杰
王俊杰
高级光能
高级光能

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

看这儿~

望采纳~

我要回答