0
已解决
李瑞曦
高级天翼
高级天翼
没有什么不同啊,只是数据大了点,把数组开大后为什么超时?
#include <iostream>
#include <algorithm>
using namespace std;
int n,t,d;
int a[1121111];
int t,cnt,s=0x3f3f3f3f;
int main() {
cin>>n>>d;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
{
t=a[i]+d;
for(int j=1;j<=n;j++)
{
if(a[j]<a[i]||a[j]>a[i]+d)
cnt++;
}
s=min(s,cnt);
cnt=0;
}
cout<<s;
return 0;
}
都来看看啊~
李瑞曦在2020-07-14 15:11:51追加了内容
我太难了~
0
已采纳
汤启恩
新手光能
新手光能
1.数据范围不一样
第一题
n∈[1,100],d∈[0,100],每个数∈[1,100]
第二题
n∈[1,200000],d∈[0,1000],每个数∈[1,100000]
第一题用双重循环没有问题,但第二题很有可能会超时
所以第二题必须用单重循环+while
第二题思路(第一题也能用):
定义n,k,a[只要定义200001],minn=200001;
输入
sort排序
定义j=1;
循环1~n
while(j<=n&&a[j]-a[i]<=k)
j++;
minn=minn和n-(j-i)的最小值
最后输出minn
0
0
董子墨
中级天翼
中级天翼
你都不计算时间复杂度的呀
时间复杂度都是O(n^2)
第1题O(n^2)=O(100*100)=O(10^5),没到10^8,不会超。
第2题O(n^2)=O(100000*100000)=O(10^10),到了10^8,会超。
0
0
0