问题标题: 酷町堂:whatbjilijiajfijlaga????我滴代码肿么列???

0
0
已解决
张舒斌
张舒斌
中级光能
中级光能

1548 游戏之金币增长

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,count=0;
    cin>>n;
    int a[n];
    for(int i=1;i<=n;i++)
    {
        cin>>a[i]; 
    }
    for(int i=1;i<=n-1;i++)
    {
        for(int j=i+1;j<=n;j++)
        {
            if(a[i]-a[j]==n||a[j]-a[i]==n)
            {
                count++;
            }
        }
    }
    cout<<count;
    return 0;
}

找错,谢谢大佬们


0
已采纳
栾峻岩
栾峻岩
初级天翼
初级天翼

对于100%的数据,N <= 200000。

200000^2>10^8

所以双重循环要超时,要用更高端的方法!(我只得了70分)。

 

1、要输入n和m,你的m呢?

所以,你的代码第十六行就要改为:

if(a[i]-a[j]==m||a[j]-a[i]==m)

 

2、

int a[n];

for(int j=i+1;j<=n;j++)
        {
            if(a[i]-a[j]==m||a[j]-a[i]==m)
            {
                count++;
            }
        }

不会使数组越界吗?

所以,a数组尽量定义比n大一点。

 

得100分的方法需要二分(可能吧)!

建议先得不部分分,打牢基础再这道题吧!(加上O2,O3优化后三个点还会超时!)。

0
我要回答