計算數字個數 1

0.25s 256M

給你 \(N\) 個正整數序列 \(a_1, a_2, \ldots, a_N\),接著再給你 \(Q\) 個詢問,第 \(i\) 個詢問給你一個正整數 \(b_i\),請回答 \(b_i\) 在序列 \(a\) 中出現幾次。

本題想讓大家練習用陣列記錄每個數字出現幾次,所以評測會檢查你的原始碼,禁止使用 C/C++ 標準函式庫的關聯容器,包含 setmultisetmapmultimapunordered_setunordered_multisetunordered_mapunordered_multimap。違反限制會得到 Wrong Answer,回饋訊息會顯示「語法限制未通過」。

以下範例程式碼會因效率不足,只能通過較小的測試資料。

#include<iostream>
using namespace std;
const int MAX_N = 200000;
int main() {
    int a[MAX_N];
    int N;
    cin >> N;
    for(int i = 0; i < N; i++) cin >> a[i];
    int Q;
    cin >> Q;
    while(Q--) {
        int b;
        cin >> b;
        int ans = 0;
        for(int i = 0; i < N; i++) ans += (a[i] == b);
        cout << ans << endl;
    }
    return 0;
}

輸入格式

輸入第一行包含一個正整數 \(N\),第二行包含 \(N\) 個正整數 \(a_1, a_2, \ldots, a_N\)。

接著第三行包含一個正整數 \(Q\),第四行包含 \(Q\) 個正整數 \(b_1, b_2, \ldots, b_Q\)。

限制

  • \(1 \le N \le 2 \times 10^5\)
  • \(1 \le a_i \le 10^6\)
  • \(1 \le Q \le 2 \times 10^5\)
  • \(1 \le b_i \le 10^9\)

輸出格式

共輸出 \(Q\) 行,第 \(i\) 行包含一個整數代表第 \(i\) 個詢問的答案。

評分說明

共有 \(3\) 個子題,每個子題包含多組測試資料,一個子題的測試資料全部答對才能得到該子題的分數。

各子題的配分及額外限制如下:

  • 子題 \(1\):\(2\) 分,\(N, Q \le 5000, b_i \le 10^6\)。
  • 子題 \(2\):\(2\) 分,\(b_i \le 10^6\)。
  • 子題 \(3\):\(1\) 分,無額外限制。

範例輸入

5
1 3 1 4 520
7
1 2 3 4 100000 1000000000 7

範例輸出

2
0
1
1
0
0
0

範例解釋

\(1\) 在序列中出現 \(2\) 次,\(3\) 和 \(4\) 各出現 \(1\) 次,其餘詢問的數字都沒有出現,所以答案依序是 \(2, 0, 1, 1, 0, 0, 0\)。

此題時限設置得非常緊,若要通過,請一定要使用 I/O 優化,也就是說,請在程式碼讀入任何東西之前,加入以下兩行:

cin.tie(0);
ios_base::sync_with_stdio(false);

並且換行必須使用 \n,若使用 endl 也會超時。

題目頁說明

快速鍵

主要功能

  • 範例測試 — 執行題目附帶的範例測資並自動比對預期輸出。
  • 自訂測試 — 自己貼 stdin 執行程式。可勾選「與預期輸出比對 (diff)」做行對行比對。
  • 模板 — 貼上你在個人資料設定的預設程式碼模板。
  • 協作 — 與其他同學共筆編輯這題的程式碼。
  • 自動草稿 — 編輯器內容每 1.5 秒自動存到瀏覽器(per 帳號 / 題目 / 語言)。
  • 提交 — 把程式碼交給 judge 評測,回傳 AC / WA / TLE 等結果。

限制

  • 程式碼最多 65,536 字元
  • 自訂測試 stdin 與預期輸出各最多 1 MB (約 100 萬字元)
  • 自訂測試與範例測試共用一個沙箱,每人約 3 秒 1 次 (範例測試 1 秒 1 次)
  • 自訂測試與範例測試都有 15 秒 牆鐘上限(正式評測仍依題目原本時限)
  • 互動題不提供自訂測試(無法模擬與 judge 互動)。
  • 提交評測本身沒有 rate limit,但同題短時間內多次提交會被視為刷分。