P9585酒店 题解

· · 题解

本题我们可以进行分类讨论(图片以 m=6 或 7 举例,红、绿色是有客人的房间,蓝色的箭头就是愤怒值):

  1. 剩下一种情况,2n>m(m\in \{2k|k\in \mathbb{N}^+,k\neq 1\}) 时,跟第 3 种情况很类似。每增加 1 个人,总愤怒值也会增加 4。2n=m 时有 \dfrac{m}{2} 人,0 点愤怒值,后来有 n 人,增加了 \Big(n-\dfrac{m}{2}\Big) 人,所以最终总愤怒值就是 \bigg(\Big(n-\dfrac{m}{2}\Big)\times 4+0\bigg),化简得 (4n-2m)。

照这样子,我们就可以写程序出来了。

#include<iostream>
using namespace std;
int main(){
    int n,m;
    cin>>n>>m;
    if((n<<1)<=m)cout<<0;
    else if(((n<<1)-1)==m)cout<<2;
    else{
        if(m&1){
            cout<<((n-(m/2+1))<<2)+2;
        }else{
            cout<<((n<<2)-(m<<1));
        }
    }
    return 0;
}