2007年5月27日星期日

我真的不是一般般的菜鸟—百度之星大赛

超级郁闷,今天那个百度之星大赛还没开始的时候,我就寄希望于作弊了,题目出来后,发现没有一个题目会做的[emot]sweat[/emot]。再冷静一下,重新看了下第一题的题目,发现关键再于拆分每种水果的名字,比较名字是否有字相同。

于是自己又开始鼓捣了半天,写的自己都不知道在些什么……

接着就去聊天室找人做,但是那里的人不是不屑做,强人嘛有的用python有的用java,就是找不到C++的强人……

接着anticlockwise 还教了我一种方法(谢谢他),可是我看不懂……

[code]map = {};
lines = getInputLines();
for line in lines:
elements = line.split("\\s+");
startTime = elements[0];
endTime = elements[1];
fruits = elements[2:];
if(map.contains(startTime)):
for fruit in fruits:
map.get(startTime).add(fruit);
else:
map.put(startTime, [fruit]);
if(map.contains(endTime)):
for fruit in fruits:
map.get(endTime).add(fruit);
else:
map.put(endTime, [fruit]);

for k, v in map.items():
if v.size() > 5:
看看v里边的水果是否都不同。 [/code]

郁闷,交卷子,不做了。唉,回去认真学,明年再战,争取过第一轮。

附上百度之星程序设计大赛的题目的压缩包:[sfile]attachment/200705/astar.zip[/sfile]

附第一题题目:
[imgx]attachment/200705/1180192332_0.jpg[/imgx]

还图文并茂呢
每个百度工程师团队都有一笔还算丰裕的食品经费,足够每天购置多种水果。水果往往下午送达公司前台。前台的姐姐们只要看到同时出现五种或以上的水果,就称之为“水果开会”。

从搜索引擎切词的语法角度,只要两种水果的名字中有一个字相同就属于同样的类别。例如“小雪梨”和“大雪梨”是同一种水果,而“核桃”和“水蜜桃”也被认为是同一种水果。尤其要指出的是,如果有三种水果x, y, z同时在前台出现,且x和y是同一种水果,y和z也是同一种水果的时候,x和z在此时也被认为是同一种水果(即使x和z并不包含相同的字)。现在前台的姐姐们想知道,今天是否有“水果开会”——五种或更多的水果同时在前台出现。

输入格式
输入的第一行只有一个整数n,表示购置水果的组数。接下来的n行表示水果的到达时间、取走时间(时间用1200到1900之间的正整数表示,保证取走时间大于到达时间)。剩下的字符串以空格分割每一种水果。如“1400 1600 雪梨 水蜜桃”,表示下午两点到四点(包含两点和四点这两个时间点),雪梨和水蜜桃会在前台等待开会。每种水果名称由不超过十个汉字组成。

输出格式
输出仅一行,包含一个字符串Yes或No,分别表示今天水果开会与否。

输入样例1 例
3
1200 1400 雪梨 柠檬
1300 1400 西瓜 苹果
1400 1800 花生 水蜜桃

输出样例1 例
Yes

输入样例2 例
3
1200 1400 雪梨 柠檬
1400 1500 哦 大梨 呀
1500 1800 咦 大梨

输出样例2 例
No

样例解释
在样例1中,时刻1400有六种水果在前台;在样例2中,由于雪梨和大梨在任何时刻都是同一种水果,最多只有四种水果同时在前台。

评分规则

程序将运行在一台Linux机器上(内存使用不作严格限制),在每一测试用例上运行不能超过1秒,否则该用例不得分;

要求程序能按照输入样例的格式读取标准输入数据,按照输出样例的格式将运行结果输出到标准输出上。如果不能正确读入数据和输出数据,该题将不得分;

该题共有10个测试数据集,每组数据均满足n< =10,每个时段最多有10个水果,一共不超过50个水果;

该题目20分。

没有评论:

发表评论