根据挖掘顺序,统计每种水晶的累计出现次数。设当前已晋升的水晶种类数为 C,每当某种水晶的累计出现次数首次达到 C+1 时,该水晶便会晋升,随后 C 增加 1。因此只需在模拟过程中寻找累计次数恰好等于 C+1 的水晶即可。
时间复杂度:O(n)
地质学家李博士在矿脉中连续挖掘水晶,他依次挖出若干块水晶,每块都属于某种种类。每挖出一种水晶,他就会更新该种水晶的累计出现次数。李博士有一个珍宝匣,专门收藏“晋升”的水晶。晋升规则如下:初始时珍宝匣为空,已晋升的水晶种类数 C=0。对于当前挖到的水晶种类,如果它的累计出现次数恰好等于 C+1,那么这种水晶立刻晋升为珍宝,放入匣中,随后 C 增加 1;同时该种类的累计记录将被永久标记,后续再挖到同种水晶也不会触发晋升。现在给出完整的挖掘顺序,请你计算最终有多少种水晶晋升为珍宝。约束:挖掘总次数 n 满足 1≤n≤10000,每个水晶种类的名称长度不超过 10。
第一行包含一个整数 n (1≤n≤10000),表示挖掘总次数。接下来 n 行,每行一个长度不超过 10 的字符串,表示被挖出的水晶种类名称。
输出一个整数,表示最终晋升为珍宝的水晶种类数。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.