#504. HILO
HILO
HILO
题目描述
Bessie 知道一个数 ,其中 是介于 到 (含端点)之间的某个整数()。 Elsie 正在尝试猜出这个数。她可以提出形如“ 高还是低?”的问题,其中 是介于 到 (含端点)之间的整数。Bessie 的回答规则是:如果 大于 ,则回答 "HI";如果 小于 ,则回答 "LO"。
Elsie 想出了如下策略来猜 Bessie 的数。在开始任何猜测之前,她先生成一个包含 个数的列表,其中从 到 的每个数恰好出现一次(换句话说,该列表是一个长度为 的排列)。然后她按照列表中的顺序依次猜测其中出现的数字。
不过,Elsie 会跳过任何不必要的猜测。也就是说:如果 Elsie 即将猜某个数字 ,并且她之前猜过某个 且 Bessie 回答了 "HI",那么 Elsie 将不会猜 ,而是继续列表中的下一个数字。类似地,如果她即将猜某个数字 ,并且她之前猜过某个 且 Bessie 回答了 "LO",那么 Elsie 将不会猜 ,而是继续列表中的下一个数字。可以证明,使用该策略,无论她生成的排列是什么,Elsie 总能唯一确定 。
如果我们把 Bessie 的所有回答("HI" 或 "LO")按顺序拼接成一个字符串 ,那么 Bessie 说出 "HILO" 的次数等于 中长度为 且等于 "HILO" 的子串个数。
Bessie 知道 Elsie 会使用该策略;此外,她也知道 Elsie 将使用的具体排列。然而,Bessie 尚未决定要选择哪个 。
请帮助 Bessie 对每个 求出她会说出 "HILO" 的次数。
输入格式
第一行包含 。 第二行包含 Elsie 的长度为 的排列。
输出格式
对每个 从 到 (含端点),输出 Bessie 说出 HILO 的次数,每个结果占一行。
5
5 1 2 4 3
0
1
1
2
1
0
提示
对于 ,Bessie 将说 "HIHI",因此 "HILO" 的总次数为 。 对于 ,Bessie 将说 "HILOLOHIHI",因此 "HILO" 的总次数为 。 对于 ,Bessie 将说 "HILOLOHILO",因此 "HILO" 的总次数为 。
评分: 测试点 1 到 4 满足 。 测试点 5 到 8 的排列是均匀随机排列。 测试点 9 到 20 没有额外限制。 题目致谢:Richard Qi
标签: USACO|2021|Gold
来源
USACO|2021|Gold