问题标题: 酷町堂:5567 成绩排名(score)

0
0
已解决
荣光峰
荣光峰
资深光能
资深光能

先看数据,啊,n<=100000,那双重循环绝对会超时。于是,加了火车头,啊90

(我还傻傻的看了测试点,我的50酷町币啊!)

谁能告诉我怎么优化?

荣光峰在2021-08-03 11:35:44追加了内容

说的详细点行不行...

荣光峰在2021-08-03 11:35:48追加了内容

说的详细点行不行...

荣光峰在2021-08-03 14:14:16追加了内容

这不是我打卡题.....


0
已采纳
王文博
王文博
缔造者之神
缔造者之神

核心:

for(int i=1;i<=n;i++)
    {
        int cnt=0;
        scanf("%d",&a[i]);
        for(int j=1;j<=i-1;j++)
        {
            if(a[j]>a[i]) cnt++;
        }
        printf("%d ",cnt);
    }

记得定义全局变量n和a[100001]即可AC。

记得加上火车头!

望采纳!

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

用桶数组即可AC

考多少分就a[考的分数]++

然后遍历分数比他高的

0
吕若朴
吕若朴
中级光能
中级光能

这题很简单!

定义一个桶(大小为40,因为成绩总是为10的倍数)

然后每次找比他高的,

然后遍历完再将自己的成绩放入桶中!

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

最慢的660ms,火车头无敌!scanf,printf无敌!黑科技无敌!

0
潘艺博
潘艺博
初级天翼
初级天翼

用火车头试试

潘艺博在2021-08-03 13:23:50追加了内容

我的代码+火车头=AC

定义 a,n[100005],cnt 等于 0;

输入 a;

循环 (1~a){

    输入 n[i];

    循环 (j~i){

         判断 (n[i] 小于 n[j]){

            cnt 加一;

         }

    }

    输出 cnt 和 " ";

    cnt 清零;

}

772ms:最高时间,要加火车头

望采纳~

我要回答