Hakim problemləri#7860

Hakim problemləri (Həll təhlili)

Problemdə DOMjudge və sistemləri tərəfindən verilən nəticələrin sayını və hansı nəticələrin olduğunu saymaq tələb olunur. Əgər nəticə DOMjudge sistemi tərəfindən dəfə və sistemi tərəfindən dəfə alınmışdırsa, bu halda uyğun gələn nəticələrin sayı üçün -yə bərabərdir.

Əvvəlcə map<string, int> cnt təsviri vasitəsilə DOMjudge sistemi tərəfindən verilən hər bir nəticə -nin neçə dəfə meydana gəldiyini sayırıq. Daha sonra sistemi tərəfindən verilən hər bir nəticə üçün -ni bir dəfə azaldırıq (əgər cnt[s] > 0). Bu azalmaların sayı hər iki sistemdə uyğun gələn maksimum nəticələrin sayına bərabər olacaq.

Nümunə

Təqdim edilmiş nümunədə DOMjudge və sistemləri tərəfindən verilən nəticələrin sayını hesablayırıq.

Dörd nəticə uyğun gəlmişdir.

Algoritmin realizasiyası

təsvirini elan edək ki, burada , DOMjudge sistemi tərəfindən nəticə -nin neçə dəfə verildiyini saxlayacaq.

map\string, int\ cnt;

Göndərmələrin sayını oxuyuruq.

cin > n;

DOMjudge sistemi tərəfindən verilən nəticələrin sayını hesablayırıq.

for (i = 0; i < n; i++)
{
  cin > s;
  cnt[s]++;
}

sisteminin nəticələrinə baxırıq.

res = 0;
for (i = 0; i < n; i++)
{
  cin > s;

Əgər nəticə DOMjudge-də mövcud olarsa (yəni cnt[s] > 0), -ni azaltmaq və sayğacını artırmaq, hər iki sistemdə uyğun gələ biləcək nəticələrin sayını artırır.

  if (cnt[s] > 0)
  {
    cnt[s]--;
    res++;
  }
}

Cavabı çap edirik.

cout << res << endl;

Java realizasiyası

import java.util.*;

public class Main
{
  static Map<String, Integer> cnt = new HashMap<String, Integer>();
  
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    int n = con.nextInt();
  
    for(int i = 1; i <= n; i++)
    {
      String s = con.next();
      if (!cnt.containsKey(s))
        cnt.put(s, 1);
      else
        cnt.put(s, cnt.get(s) + 1);
    }

    int res = 0;
    for(int i = 1; i <= n; i++)
    {
      String s = con.next();
      if (cnt.containsKey(s) && cnt.get(s) > 0)
      {
        cnt.put(s, cnt.get(s) - 1);
        res++;
      }
    }
    
    System.out.print(res);
    con.close();  
  }
}

Python realizasiyası

Göndərmələrin sayını oxuyuruq.

n = int(input())

DOMjudge sistemi tərəfindən verilən nəticələrin sayını hesablayırıq.

cnt = {}
for _ in range(n):
  s = input()
  cnt[s] = cnt.get(s, 0) + 1

sisteminin nəticələrinə baxırıq.

res = 0
for _ in range(n):
  s = input()
  if cnt.get(s, 0) > 0:
    cnt[s] -= 1
    res += 1

Cavabı çap edirik.

print(res)