#P1960. Time Planner
Time Planner
题目描述:
背景
计算机科学领域的问题常常被归类到特定的问题类别中(比如, 问题、 完全问题、不可解问题等等)。无论一个团队必须解决的是哪一类问题,始终存在一个主要问题:找到一个所有程序员都能碰面,共同处理项目的日期。
问题
你的任务是编写一个程序,为一个一直忙碌的编程团队找出所有可能的会面安排,因为这个团队在确定准确的会面日期和时间方面存在困难。
输入:
输入的第一行包含测试用例的数量。对于每个测试用例,首先在单独的一行中给出团队成员的数量 ,其中 。对于每一位团队成员,会有一行包含该成员日历中的条目数量 (),接着是 行以下列格式呈现的内容:
YYYY MM DD hh mm ss YYYY MM DD hh mm ss some string here
每一行都包含某个预约的开始和结束时间的年、月、日、时、分、秒,以及一个描述该预约的字符串。所有数字都用前导零填充,以符合给定的格式,数字之间用单个空格分隔。结尾的字符串可能包含空格,且长度不超过 个字符。日期的范围是从 到 。为简化起见,你可以假定所有月份(甚至 2 月)每月都有 30 天,并且不会出现无效日期(比如 1 月 31 日)。
请注意,团队成员预约的结束时间指的是该成员准备好参加会议的时间点。
输出:
对于每个测试用例的输出,以包含 “Scenario #i:” 的一行开始,其中 是从 开始的测试用例编号。然后,对于每个符合以下规则的可能的会议安排,打印一行内容:
在会议期间的任何时刻,至少需要有两名团队成员在场。 在会议期间的任何时刻,最多允许有一名团队成员缺席。 会议时长至少为一小时。 所有团队成员都愿意一天 小时工作。
例如,如果有三名团队成员 ,以下是一次有效的会议:一开始只有 和 参加,后来 加入会议,在会议结束前, 可以离开。
始终打印满足这些条件的最长的可能会议安排,即使时长可能长达 年。按照日期和时间对这些行进行排序,并使用以下格式:
appointment possible from MM/DD/YYYY hh:mm:ss to MM/DD/YYYY hh:mm:ss
表示月份、日期、年份、小时、分钟和秒的数字都应该用前导零填充,以达到所需的字符数。如果不存在可能的会议安排,只需打印一行内容 “no appointment possible”。每个测试用例的输出都以一个空行结束。
输入数据1
2
3
3
2002 06 28 15 00 00 2002 06 28 18 00 00 TUD
Contest Practice Session
2002 06 29 10 00 00 2002 06 29 15 00 00 TUD
Contest
2002 11 15 15 00 00 2002 11 17 23 00 00 NWERC
Delft
4
2002 06 25 13 30 00 2002 06 25 15 30 00 FIFA World Cup Semifinal I
2002 06 26 13 30 00 2002 06 26 15 30 00 FIFA World Cup Semifinal II
2002 06 29 13 00 00 2002 06 29 15 00 00 FIFA World Cup Third Place
2002 06 30 13 00 00 2002 06 30 15 00 00 FIFA World Cup Final
1
2002 06 01 00 00 00 2002 06 29 18 00 00 Preparation of Problem Set
2
1
1800 01 01 00 00 00 2200 01 01 00 00 00 Solving Problem 8
0
输出数据1
Scenario #1:
appointment possible from 01/01/1800 00:00:00 to 06/25/2002 13:30:00
appointment possible from 06/25/2002 15:30:00 to 06/26/2002 13:30:00
appointment possible from 06/26/2002 15:30:00 to 06/28/2002 15:00:00
appointment possible from 06/28/2002 18:00:00 to 06/29/2002 10:00:00
appointment possible from 06/29/2002 15:00:00 to 01/01/2200 00:00:00
Scenario #2:
no appointment possible
来源:
2002 年德国达姆施塔特工业大学编程竞赛