P9585 题解(2023 激励计划评分 7)

· · 题解

Task 1~3

容易发现,当 2n\le m 时,一定可以做到任意一位客人的相邻的房间都没有人,所以答案为 0

Task 4~6

由于 m=n+1,所以只会空出一个房间。

与这个空房间相邻的客人的愤怒值显然为 1,而剩余 (n-2) 位客人的愤怒值就为 2,所以答案为 1+1+2(n-2)=2n-2

Task 7~10

根据 Task 1~3 的结论,我们知道当 2n\le m 时答案为 0

我们思考 2n\gt m 时的答案。

不好考虑有人的房间怎么安排,那我们可以考虑空房间怎么安排。

两个空房间相邻是没有用的,所以我们要让与空房间相邻的房间都为有人的房间。由于空房间数量比有人的房间的数量要少,所以这个条件是可以做到的。

当没有空房间时,每位客人的愤怒值都为 2;每一个空房间,可以使相邻的 2 个房间内的客人的愤怒值减少 1。我们知道空房间的数量为 m-n,所以答案为 2n-2(m-n)=4n-2m

Code

#include <bits/stdc++.h>
using namespace std;
signed main(){
    int n,m;
    cin>>n>>m;
    if(n*2<=m) cout<<0;
    else cout<<4*n-2*m;
    return 0;
}