#5283. USACO 2014 December Contest, Bronze Learning by Example

USACO 2014 December Contest, Bronze Learning by Example

题目描述

农夫约翰一直在阅读关于机器学习这个令人兴奋的领域的资料,在这个领域中,人们可以通过分析大量数据来发现有趣且有时出乎意料的模式(他甚至开始把他农场里的一块地称为“机器学习田”!)。约翰决定利用他现有牛群的数据来构建一个自动分类器,用于判断一头牛是否有斑点。

不幸的是,约翰在记录奶牛的数据方面做得不太好。对于他的NN头奶牛(1 <= NN <= 50,000),他只知道每头奶牛的体重以及是否有斑点。每头奶牛的体重都是不同的。基于这些数据,他构建了一个所谓的“最近邻分类器”。为了判断一头新奶牛CC是否有斑点,约翰首先在他的牛群中找到体重与CC最接近的奶牛CC'。如果CC'有斑点,那么约翰就猜测CC也有斑点;如果CC'没有斑点,约翰对CC的猜测也是如此。如果没有唯一的最近邻CC',而是与约翰的两头奶牛距离相同,那么只要这两头最近邻中有一头或两头有斑点,约翰就猜测CC有斑点。

约翰想在一群刚到农场的新奶牛身上测试他的新自动斑点预测器。称完这些奶牛的体重后,他发现这批新奶牛的体重涵盖了从AABB(包含AABB)的每一个整数。请使用约翰的新分类器,确定这些奶牛中会被分类为有斑点的数量。注意,分类器只使用约翰现有的NN头奶牛的数据,而不使用任何新奶牛的数据。另外,由于AABB可能都很大,如果程序从AA循环到BB逐个计数,可能运行速度不够快。

输入格式

  • 第1行:输入包含三个整数NNAABB(1 <= AA <= BB <= 1,000,000,000)。
  • 接下来NN行:每行描述一头奶牛。每行包含要么是“S W”,表示一头体重为WW的有斑点奶牛,要么是“NS W”,表示一头体重为WW的无斑点奶牛。体重均为1到1,000,000,000之间的整数。

输出格式

  • 一行:一个整数,表示约翰的算法将分类为有斑点的新奶牛数量。

样例

样例输入

3 1 10
S 10
NS 4
S 1

样例输出

6

数据范围

1 <= NN <= 50,000,1 <= AA <= BB <= 1,000,000,000,奶牛体重为1到1,000,000,000之间的整数