排隊I 替換兩層複雜for迴圈 避免TLE

2022-03-11 04:52:31 字數 1063 閱讀 2170

時間限制: 1 sec  記憶體限制: 128 mb

提交: 391  解決: 49

[提交] [狀態] [討論版] [命題人:admin]

題目描述

楠楠最近在研究南海區5年級英語成績的排序有關演算法,如果數列中的數是從小到大排列的,則稱有序的。研究中對於沒有排好序的數列,要統計每個數前面有多少比它大的數字。比如有5個數的數列:   3  1  4  2  5,則第1個數3之前有0個數比它大;第2個數1之前有1個數比它大;第3個數4之前有0個數比它大;第4個數2之前有2個數比它大;第5個數5之前有0個數比它大。由於數列很長,楠楠求你程式設計來統計。

輸入第一行1個整數n,表示數列有n個整數。

第二行有n個非負整數,每個數表示乙個分數,範圍是[0…120]。

輸出一行n個非負整數(每個非負整數後面有乙個空格),第i個數表示原數列中第i位前有多少比第i位數大。

複製樣例資料

5

3 1 4 2 5

樣例輸出

0 1 0 2 0
提示

8個的資料: n的範圍是[1…1000],每個數範圍是[0…120]

2個的資料:n的範圍是[1…1,00,000],每個數範圍是[0…120]

之前做過一次和這個幾乎一樣的題目 但是之前的題目資料沒有那麼大 所以未出現tle 也就沒考慮用神麼方法優化一下 比賽完也沒想到好的思路 看了部落格 學到種方法 可惜我把陣列大小開反了 也沒提示執行錯誤 所以也沒注意是陣列問題 最後從頭讀了下**才發現

記錄輸入的數m 每次輸入乙個數就用 for去從m+1 開始遍歷到120 

如果m+1這個值 超過0個就把他的數目加入count中

#includeint main()

,count[100005]; //陣列count用來記錄第i個值前面比他大的數目

scanf("%d",&n);

for(i=0;i1.**最後不加\n(換行) 也會判對

2.在輸入後面可以做一些事 就像打表一樣 縮短時間

3.根據資料大小 先考慮會不會tle

感謝:點選訪問他的部落格

兩層c forEach迴圈巢狀

jsp中兩級選單如何用c foreach輸出 items 要被迴圈的資訊否無 begin 開始的元素 0 第乙個元素,1 第二個元素 否0 end最後乙個元素 0 第乙個元素,1 第二個元素 否last element step 每一次迭代的步長否1 var代表當前條目的變數名稱否無 varstat...

常用PHP陣列兩層迴圈優化

陣列a的id 與 陣列b的pid 關聯 a id 1,name a1 id 2,name a2 id 3,name a3 b pid 1,money 100 pid 2,money 200 pid 3,money 300 假設我們需要得到最後的列表結果為 id 1,name a1 money 100...

氣泡排序法demo 兩層巢狀for迴圈

namespace consoledemo 雙層迴圈實現氣泡排序 class program static void main string args sortednumbers 該方法獲得需要排序的陣列,表呼叫排序方法進行排序 public static void sortednumbers in...