转自:其名为鲲
原帖: http://hi.baidu.com/sophiaandphilem/blog/item/a7360af731a25a23730eec6c.html
Astar2007初赛第一场的题目
原帖: http://hi.baidu.com/sophiaandphilem/blog/item/a7360af731a25a23730eec6c.html
Astar2007初赛第一场的题目
2007-05-27 10:10
今天的百度之星大赛21时开始的预赛第一场已经于23时结束了。我站搜集了今日的四道考题,在此与未参加此次预赛的爱好者们分享,共同享受下程序快乐!
1.水果开会时段 每个百度工程师团队都有一笔还算丰裕的食品经费,足够每天购置多种水果。水果往往下午送达公司前台。前台的姐姐们只要看到同时出现五种或以上的水果,就称之为“水果开会”。 从 搜索引擎切词的语法角度,只要两种水果的名字中有一个字相同就属于同样的类别。例如“小雪梨”和“大雪梨”是同一种水果,而“核桃”和“水蜜桃”也被认为 是同一种水果。尤其要指出的是,如果有三种水果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 该题目20分。 2.大话西游与数字游戏 “叉烧鸡翅膀,我呀最爱吃!……”,百度spider组的“黑龙潭之行”在烤着鸡翅,唱着星爷的经典时达到高潮。大家在篝火旁围成一圈,开始玩“数7”加强版游戏,规则如下: 规则1:遇7的倍数或含7的数时pass。 规则2:遇有包含相同数字的数时pass。注意相同数字不必相邻。例如121。 数错的惩罚很残酷——吞食烤全羊。为避免惩罚,百度工程师们需要你——史上最强程序员的帮助。百度工程师想知道: req1 x:符合规则1的第x个数是什么? req2 y:符合规则2的第y个数是什么? req12 z:同时符合规则1、2的第z个数是什么? query n:数n是规则1中的第几个数,是规则2中的第几个数? 输入格式 输入的每一行为一个查询,由一个查询词和一个无符号整型数组成。共有四种查询,查询词分别为req1、req2、req12、query(区分大小写)。 输出格式 前三种查询输出一个无符号整型的解。对于“query n”的查询,若n是规则中的数则输出相应的解,否则输出-1。 输入样例 例 req1 10 req2 10 req12 10 query 14 输出样例 例 11 10 12 -1 13 评分规则 程序将运行在一台Linux机器上(内存使用不作严格限制),在每一测试用例上运行不能超过1秒,否则该用例不得分; 要求程序能按照输入样例的格式读取标准输入数据,按照输出样例的格式将运行结果输出到标准输出上。如果不能正确读入数据和输出数据,该题将不得分; 该题目共有10个测试数据集,其中数据1~5主要考查正确性,满足x,y,z,n 该题目20分。 3.繁忙的会议室预定问题 百度由最开始的7人团队迅速发展为几千人的大团队,而工程师们经常需要在一起进行“头脑风暴”,这样会议室就成了紧缺资源。为了有效利用资源,大家决定制定规则, 自动安排会议室的使用。 为 了公平起见,应按照申请时间从早到晚依次考虑,先到先得,且申请一旦被接受就不能取消。在处理每条请求时,只要当前请求可以和前面已接受的所有请求同时满 足时就必须被接受(如有必要,可以调整给已接受申请安排的会议室和开会时间)。注意同一时间开的不同会议必须在不同的会议室,而同一个人不能同时参加两个 会议。 输入格式 输入第一行为会议室总数n和请求总数m;第二行是n个整数,表示会议室能够容量的人数。以下m行每行是一个请求,按请求时间先后顺序排列(即应优先满足在输入中更早出现的请求)。 每 个请求中第一个是整数,表示会议需要的时间长度(单位:小时);之后为与会人名单。人名由不超过四个汉字组成,用半角逗号分隔(每人名字固定且唯一,有重 名的也在登记时区分开)。名单后的数字表示可以安排会议的时间,也以半角逗号分隔,如 10,11,14,15 表示第10, 11, 14, 15个小时可以开会(会议时间为9到19之间的正整数)。 输出格式 输出m行,依次表示每个请求是否被接受。1表示接受,0表示不接受。 输入样例: 例 2 4 20 2 3 张三,李四,王五 10,11,12,14,15 1 张三 12 4 王六,王七,王八,王九,王十 9,10,11,12,13,14,15 2 张三 14,15 输出样例: 例 1 0 0 1 样例解释 请 求1可以满足,因此接受;在请求1接受的前提下请求2和请求3都无法满足,因此不接受。请求1和请求4可以同时满足(都在会议室1,前者用时间 10~12,后者用时间14~15)。需要特别注意的是:如果没有请求1,后三个请求可以同时满足。但是规则是先到先得,请求1只要可以满足就必须接受。 评分规则 程序将运行在一台Linux机器上(内存使用不作严格限制),在每一测试用例上运行不能超过2秒,否则该用例不得分; 要求程序能按照输入样例的格式读取标准数据,按照输出样例的格式将运行结果输出到标准输出上。如果不能正确读入数据和输出数据,该题将不得分; 该题共有15个测试数据集,均满足n 该题目30分。 4.SQL中的SELECT语句 SQL中的SELECT语句用于从数据库中查询记录。某个工程项目数据库中有一个所有数据均为字符串的表,需要查询一些满足条件的记录数。本题考虑SELECT语句的简化形式,相关语句格式如下: 1. 计数语句,查询满足条件的记录条数。有两种格式: 格式1:SELECT COUNT(*) WHERE 格式2:SELECT COUNT(*) 2. 子集选择语句,选择满足条件的记录并组成一个集合。有两种格式 格式1:SELECT * WHERE 格式2:SELECT * 上述两种语句中的FROM子句具有相同的格式: 格式1:FROM 格式2:FROM (子集选择语句) 其中TABLENAME为该工程中惟一的表名,子集选择语句即上述用SELECT *开头的语句。 条件的格式为一条或多条=用关键字and连接(不区分大小写),其中FIELD为字段名,VALUE为数据值,它们均为由大小写字母和数字组成的长度不超过10的非空字符串。该条件表示所有特定的字段必须等于给定值。 给定表中的所有记录和若干条计数语句,输出所有语句的结果。 输入格式 输 入第一行为三个整数c, n, q,分别表示数据库中表的列数、记录数和查询次数;第二行为表名(即TABLENAME);第三行为表中的c个字段名(FIELD),之间用一个或多个空 格隔开,字段名各不相同;接下来n行,每行表示一个记录,有c个数据值(VALUE),之间用空格隔开;接下去有q行,每行一条SELECT记录数语句, 该语句长度(包括空格)不超过1000。输入数据保证每条语句满足题目中给出的计数语句的定义,并且FROM子句的格式1中出现的表名和输入的表名一致。 输出格式 输出q行,每行一个整数,表示相应语句输出的结果(即满足条件的记录数)。 输入样例 例 4 5 6 Book BookName Price PublishDate Author NBAsports 10 2004 dearboy SQL 20 2002 absorbed IntrotoAlgorithm 59 2002 Thomas MultipeView 60 2002 RichardHautley NBAsports 10 2004 dearboy SELECT COUNT(*) FROM Book WHERE BookName=NBAsports and Author=dearboy SELECT COUNT(*) FROM Book WHERE Price=20 SELECT COUNT(*) FROM Book WHERE Author=lala SELECT COUNT(*) FROM (SELECT * FROM Book WHERE BookName=NBAsports) SELECT COUNT(*) FROM (SELECT * FROM Book WHERE BookName=NBAsports) WHERE Price=20 SELECT COUNT(*) FROM Book 输出样例 例 2 1 0 2 0 5 评分规则 程序将运行在一台Linux机器上(内存使用不作严格限制),在每一测试用例上运行不能超过2秒,否则该用例不得分; 要求程序能按照输入样例的格式读取标准数据,按照输出样例的格式将运行结果输出到标准输出上。如果不能正确读入数据和输出数据,该题将不得分; 该 题共有10个测试数据集,数据1的表与样例相同,并包含15条SELECT语句。数据2,3,4,5的表分别有1,2,5,7列,数据6~10的表均有8 列。数据2~5的表均有恰好1000条记录,并包含100个SELECT语句。数据6~10的表不超过3000条记录,并包含不超过20000条 SELECT语句。本题的后5组数据着重考查程序的时间效率; 该题目30分。 |