Judging Troubles: Difference between revisions
Jump to navigation
Jump to search
imported>Kmk21 Created page with "= Introduction = This problem asks you to compare two lists and return the number of common entries = Solutions= == HashMap == === Idea === Create a hashmap of strings to nu..." |
imported>Kmk21 No edit summary |
||
Line 49: | Line 49: | ||
[[Category:nwerc2014]] | [[Category:nwerc2014]] | ||
[[Category:ICPC Problems]] | [[Category:ICPC Problems]] | ||
[[Category:Hashmap]] | |||
[[Category:Algorithm Easy]] | [[Category:Algorithm Easy]] | ||
[[Category:Implementation Easy]] | [[Category:Implementation Easy]] |
Revision as of 22:31, 31 January 2015
Introduction
This problem asks you to compare two lists and return the number of common entries
Solutions
HashMap
Idea
Create a hashmap of strings to number of appearances of that string. Read through the first list, incrementing the count for each string found. Scan through the second list. For each string in the map with a positive count, add 1 to the total match count, and subtract 1 from the value in the hashmap.
Runtime
- n
Code
Solution - Java
import java.util.*;
public class j {
Scanner in=new Scanner(System.in);
public static void main(String[] args) {
new j().go();
}
private void go() {
int n=in.nextInt();
HashMap<String,Integer> dom=new HashMap<String,Integer>();
HashMap<String, Integer> kat=new HashMap<String,Integer>();
for(int i=0;i<n;i++){
String s=in.next();
if(!dom.containsKey(s))dom.put(s, 0);
dom.put(s, dom.get(s)+1);
}
for(int i=0;i<n;i++){
String s=in.next();
if(!kat.containsKey(s))kat.put(s, 0);
kat.put(s, kat.get(s)+1);
}
int ans=0;
for(String s:dom.keySet())if(kat.containsKey(s))ans+=Math.min(dom.get(s), kat.get(s));
System.out.println(ans);
}
}
Sorting
Idea
Sort the two lists. Start at the head of each list. If the two match, increment the total match count. If they don't, increment the index of the list with the word that appears first alphabetically.
Runtime
n*log(n)