SP6693 BOKO - C - Karaoke

题目描述

**问题 C** **卡拉 OK** “我唱得太糟糕了!”贡佐总是这样抱怨。“来吧!没人会在意的,就图个乐嘛!”朋友们总是这样安慰他,“我们会全力支持你的!”然而,贡佐还是不放心。虽然他在洗澡时喜欢唱歌,但在公众场合表演确实令他不安。他曾经玩过卡拉 OK 游戏,问题总是出在音调上:他能很好地发音并保持音调,但通常音调不对,时间也不准。所以他的得分一向都很低。 不过,他有一个办法可以扭转局面。贡佐有位朋友刚从编程比赛回来,送给了他一个 U 盘,上面有一个能解决问题的程序:音乐校正器(ACM)。这个程序能调整游戏检测到的音高,以帮助他获得更高的分数。贡佐松了口气,这次他不会成为小组中表现最差的人了。他只需正确地使用这个程序。卡拉 OK 游戏会显示一个屏幕,其中有几个水平条,代表歌曲的歌词,这些条在时间轴上有不同的高度。每个条的高度表示那个单词的音高,即游戏期待从歌者处检测到的音高。游戏通过麦克风接收歌者的声音,检测音高和被检测音高的时间间隔。然后,通过与原歌曲比较,游戏在同一图上显示新一组的水平条,并依据以下规则计算分数: - 游戏开始时,歌手的分数为 0。 - 如果歌曲音高和歌手音高一致,歌手每秒获得 100 分。 - 如果二者音高不同,歌手每秒会失去这两个音高的绝对差值的分数。 - 如果没有歌曲音高,但歌手在唱歌,或反过来,游戏会导致每秒失去 100 分。 - 如果既没有歌曲音高也没有来自麦克风的输入,分数保持不变。 ACM 程序通过统一增加一个整数来调整所有歌手音高,但不能只调整某一部分音高。音高始终是正数,如果音高降到零或更低,游戏会解释为没有声音输入。程序还可以通过增加若干秒来调整歌曲或歌声的开始时间,以更好地对齐时间间隔。图中展示了一个示例:实线代表歌曲单词,虚线代表歌手被检测到的单词。 ![Figura1](https://cdn.luogu.com.cn/upload/vjudge_pic/SP6693/d0240a759280623ac7cec2249524de0d9636c660.png) 你将获得游戏中存储的歌曲细节信息以及麦克风检测到的歌词信息。利用这些信息,你需要确定通过调整歌手的音高和延迟歌曲或声音的时间,能获得的最大可能分数。

输入格式

输入包含多个测试用例。每个测试用例的第一行包括一个整数 $N$,表示歌曲中包含的单词数量($1 \leq N \leq 200$)。接下来的 $N$ 行每行包含六个整数 $s_{i1}$, $f_{i1}$, $p_{i1}$, $s_{i2}$, $f_{i2}$ 和 $p_{i2}$。前三个整数表示单词 $i$ 所需的时间区间 $[s_{i1}, f_{i1})$,其中单词应以音高 $p_{i1}$ 唱出。接下来的三个整数表示检测到的歌手单词 $i$ 的时间区间 $[s_{i2}, f_{i2})$ 和音高 $p_{i2}$。所有情况中,$0 < s_{i1} < f_{i1}$, $0 < s_{i2} < f_{i2}$, $20 < p_{i1}, p_{i2} < 120$。输入的结束由一行仅包含 0 标识。

输出格式

对于每个测试用例,你的程序要输出一行,表示使用 ACM 程序在游戏中可能获得的最大分数。

说明/提示

- 单词数量 $1 \leq N \leq 200$ - 时间区间 $0 < s_{i1} < f_{i1}$ - 时间区间 $0 < s_{i2} < f_{i2}$ - 音高范围 $20 < p_{i1}, p_{i2} < 120$ **本翻译由 AI 自动生成**