CC Hotel 房间安排 - 最小愤怒值之和
"题目描述\n小 C 开了一家酒店,叫做 CC Hotel。\n\n一天,CC Hotel 来了 n 位客人。小 C 需要把他们都安排在酒店的某一层中。每个房间中只能安排一位客人。\n\n这一层共有 m 间房间,这 m 间房间都是空的,且这 m 间房间形成了一个环形,即对于所有的 1\u003c=x\u003c=m,都有第 x 间房间与第 ((x mod m)+1) 间房间相邻,第 ((x mod m)+1) 间房间与第 x 间房间相邻,其中 x mod m 表示 x 除以 m 得到的余数。\n\n这 n 位客人都十分挑剔,他们希望与自己的房间相邻的房间中没有人。对于某一位客人,若与他的房间相邻的房间中,有 k 间房间有人,则这位客人会产生 k 点愤怒值。\n\n你需要帮助小 C 安排房间,使得所有客人的愤怒值之和最小,并输出所有客人的愤怒值之和的最小值。\n\n输入格式\n两个整数 n,m。\n\n输出格式\n一个整数,表示所有客人的愤怒值之和的最小值。\n\n输入输出样例\n输入 #1\n3 5\n输出 #1\n2\n输入 #2\n1 4\n输出 #2\n0\n\n根据上述题意,给出思路内容:首先,我们可以观察到,如果 m=1,则无论有多少位客人,他们的愤怒值之和都为 0。因为只有一个房间,无法满足客人的要求,所以他们不会有愤怒值。\n\n接下来,我们考虑当 m>1 时的情况。我们可以发现,当 m=2 时,无论有多少位客人,他们的愤怒值之和都为 0。因为只有两个房间,无论客人在哪个房间,另一个房间都是空的,所以他们不会有愤怒值。\n\n继续观察,当 m>2 时,我们发现一个规律:对于任意一个房间,它的相邻房间中,一定有 m/2 个房间是空的。这是因为,对于第 x 间房间,它的相邻房间为第 ((x+1) mod m)+1 间房间和第 ((x-1) mod m)+1 间房间,其中 x mod m 表示 x 除以 m 得到的余数。所以在所有的 m 个相邻房间中,会有 m/2 个房间是空的。\n\n因此,当 m>2 时,无论有多少位客人,他们的愤怒值之和都为 m/2。因为每个客人的房间都与两个相邻房间相邻,而这两个相邻房间中的空房间有 m/2 个,所以每个客人的愤怒值都为 m/2,总的愤怒值之和为 n*(m/2)。\n\n综上所述,当 m=1 时,愤怒值之和为 0;当 m=2 时,愤怒值之和为 0;当 m>2 时,愤怒值之和为 n*(m/2)。\n\n"
原文地址: https://www.cveoy.top/t/topic/qvXl 著作权归作者所有。请勿转载和采集!