SCBN2 - Số cặp bằng nhau 2

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Cho một dãy gồm ~n~ số nguyên, hãy đếm số cặp bằng nhau trong dãy

Input

  • Dòng đầu tiên chứa duy nhất một số nguyên dương ~n~ (số phần tử trong dãy).
  • Dòng thứ hai chứa n số nguyên là các phần tử ~a_1,a_2,…,a_n~

Giới hạn:

  • ~1≤n≤10^5,0≤a_i≤5.10^4~

Output

  • In ra trên một dòng số nguyên không âm là số cặp bằng nhau liên tiếp trong dãy.

Sample

Input #1
4
3 1 2 3
Output #1
1
Input #2
5
4 1 1 2 2
Output #2
2
Input #3
6
5 3 1 2 1 1
Output #3
3

Problem source: Chuyên Sơn La Online Judge


Bình luận

Please read the guidelines before commenting.



  • 1
    mducc  đã bình luận lúc 2, Tháng 6, 2026, 13:43 sửa 3

    hint

    đùng map để lưu các phần tử của mảng a rồi cùng c(n, 2) để đếm số cặp bằng nhau

    code tham khảo (c++)

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
        int n; 
        cin >> n; 
        int a[n + 1]; 
        map < int, int> mp; 
        for(int i = 1; i <= n; ++i) cin >> a[i], mp[a[i]]++;
        long long ans = 0; 
        for(auto &p : mp) ans += 1ll * p.second * (p.second - 1) / 2; 
        cout << ans;  
    }
    

    • 1
      mducc  đã bình luận lúc 2, Tháng 6, 2026, 13:47 chỉnh sửa

      chỗ map <int, int> mp; hệ thống đọc bị lỗi, các bạn sửa thành map <int, int> mp; nhé


  • 0
    leminhkhang2012d  đã bình luận lúc 7, Tháng 5, 2026, 11:51

    OISHI


  • 0
    kleanh14  đã bình luận lúc 2, Tháng 4, 2026, 11:27

    include <bits/stdc++.h>

    using namespace std; long long n,a[1000005]; int main() { cin>>n; for(int i=1 ; i<=n ; i++) { cin>>a[i]; } long long jack=0; for(int i=1 ; i<=n ; i++) { for(int j=i+1 ; j<=n ; j++) { if(a[i]==a[j]) { jack++; } } } cout<<jack; }


  • 0
    kleanh14  đã bình luận lúc 2, Tháng 4, 2026, 11:27

    d


  • 0
    kleanh14  đã bình luận lúc 2, Tháng 4, 2026, 11:27

    hi uois;dhsjdjjsJPjpijzdohoncdkshku toi bi gay


  • 0
    kleanh14  đã bình luận lúc 2, Tháng 4, 2026, 11:23

    cute


  • 0
    theguy777_jaboi  đã bình luận lúc 16, Tháng 1, 2026, 13:44

    include <bits/stdc++.h>

    using namespace std; int n,a[100011],cnt; int main() { cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; sort(a+1,a+n+1); for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ if(a[i]==a[j])cnt++; } } cout<<cnt; return 0; } ae sao bị tle


  • 0
    congtyluuthaibao1978  đã bình luận lúc 26, Tháng 11, 2025, 11:38

    include <bits/stdc++.h>

    using namespace std;

    int main() { ios::syncwithstdio(false); cin.tie(nullptr);

    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; i++) cin >> a[i];
    
    map&lt;int,long long> freq;
    for (int x : a) freq[x]++;
    
    long long cnt = 0;
    for (auto &[val,f] : freq) {
        cnt += f * (f - 1) / 2;
    }
    
    cout << cnt;
    return 0;
    

    }


  • 0
    SuperCoder  đã bình luận lúc 22, Tháng 11, 2025, 15:38

    dành cho ai bí muốn tham khảo nha !

    • Ý tưởng: Mọi người dùng công thức

    nC2 = n(n-1) / 2 nha !

    #include <bits/stdc++.h>
      using namespace std;
    
    
    

    int main() { int n; cin >> n; vector<int> v(n); map<long long,long long> mp; for (int i = 0; i < n; i++) { cin >> v[i]; mp[v[i]]++; } long long res = 0; for (auto p : mp) { if (p.second > 1) { res += (p.second * (p.second - 1)) / 2; } }

    cout << res;

    return 0; }


  • 2
    Very_skibidi  đã bình luận lúc 27, Tháng 11, 2024, 8:45

    Ý tưởng giải bài này: Thay vì dùng long long int thì dùng string đi vì string không có giới hạn


  • 0
    Shmily16  đã bình luận lúc 29, Tháng 7, 2024, 3:23

    đề bịp :v có test long long mà bảo a[i] <= 5e4


  • 3
    van123dz  đã bình luận lúc 3, Tháng 4, 2024, 15:10

    O(n^2) =))


  • 0
    lhnhung258  đã bình luận lúc 20, Tháng 1, 2024, 4:10

    test 7 là gì thế ạ


  • 3
    baduy  đã bình luận lúc 23, Tháng 12, 2023, 7:30

    bài này bạn có thể sử dụng map để lưu tần suất xuất hiện của các phần tử trong mảng, xong bạn check nếu số lần xuất hiện lớn hơn 2 thì bạn tính tổ hợp chập 2


  • -1
    sang41dz  đã bình luận lúc 29, Tháng 2, 2024, 14:57

    ban dua minh day a. So luong cap la to hop chap 2 cua k phan tu voi k te nhat bang n.Int chua bang mat


  • 0
    phanh  đã bình luận lúc 13, Tháng 8, 2023, 2:56

    Bài này mng làm cách nào vậy ạ?? E làm mãi k ac được :((


    • -2
      baduy  đã bình luận lúc 23, Tháng 12, 2023, 7:32

      bài này bạn có thể sử dụng map hoặc mảng đếm để lưu tần suất xuất hiện rồi ktra nếu xuất hiện từ 2 lần trở lên thì bạn tính tổ hợp chập 2


      • -4
        chinhle  đã bình luận lúc 11, Tháng 2, 2024, 14:35

        tôi có dùng rồi nhưng tính giai thừa cũng bị tle


    • 1
      tide1  đã bình luận lúc 29, Tháng 8, 2023, 14:57

      Bạn tham khảo ý tưởng giải bài : link enter link description here