焜焜. 2022-07-30 15:41 采纳率: 75%
浏览 28

运行超时过不了,怎么办?


#include<cstdio>
using namespace std;
int ans,n,j=3,k;
int main()
{
    scanf("%d",&n);
    int a[n+1];
    for(int i=1;i<=n;++i)scanf("%d",&a[i]); 
    for(int i=1;i<=n;++i)for(int j=1+i;j<=n;++j)if(a[i]>a[j])++ans;
    printf("%d",ans);
    return 0; 
}

题目描述:
给定一个序列a1,a2,…,an,如果存在iaj,那么我们称之为逆序对,求逆序对的数目。
样例:
4
3
2
3
2
输出:3
问题:
自己在软件上运行并没有什么问题,但是提交之后却判的错,原因是运行超时,有什么办法可以解决?
题目网址:http://ybt.ssoier.cn:8088/problem_show.php?pid=1311

  • 写回答

2条回答 默认 最新

  • weixin_51793354 2022-07-30 16:57
    关注

    n的范围是1e5,也就是10的5次方,两个for循环的时间复杂度是1e5 * 1e5 = 1e10, 计算机每秒大约可以运行5e8,所以运行大约需要20s,而时间限制是1000ms = 1s,所以就超时了。

    你需要了解时间复杂度的概念,然后学习一个更快的算法(nlog(n))( 比如 通过“归并排序求逆序数”,或通过“线段树求逆序数”)

    评论

报告相同问题?

问题事件

  • 创建了问题 7月30日

悬赏问题

  • ¥15 在使用libyuv库时的一个NV12转RGB24的问题
  • ¥15 QT+Gstreamer框架开发视频采集,无法将waylandsink视频绑定qt窗口
  • ¥15 vs2010开发 WFP(windows filtering platform)异常
  • ¥30 8*8*25的矩阵和1*8*25的矩阵相乘
  • ¥15 Ubuntu20.04主机有两个网口,如何配置将其中一个网口用来接入外网,另一个网口用来给其他设备上网
  • ¥15 ml307r-dl如何实现录音功能
  • ¥15 付费100元 悬赏iphone 15pm 链接watch s7 移动一号双终端 下载不了esim文件解决办法?
  • ¥60 云南移动网络无法访问网站,但联通电信可正常访问
  • ¥15 寻找有过Qt加载网页项目经验的人
  • ¥15 我的电脑在最近一次windows更新后彻底打不开了,一按电源键只有这个提示,如何解决