题解:P12404 「CZOI-R3」可爱棉羊

· · 题解

思路

由于要最少,所以尽量互相传播,因为不能传播给自己,所以要特判 n=1 的情况,公式如下:

Sick_{min}=\max(x,2)

如上图,由于要最多,所以尽量向两边拓展,考虑一只患病的羊第一轮向右,第二轮两只患病的羊同时向两边拓展,t 轮则可传染 t\times 2 只羊,x 只羊每 t\times 2 只羊放一只患病的羊则可传染 x\times t\times 2 只羊,由于只有 n 只羊,所以公式如下:

Sick_{max}=\min(x\times t\times 2,n)

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
    int n,t,x; cin>>n>>t>>x;
    int mi=max(2LL,x),mx=min(n*1LL,x*2*t);
    cout<<mx<<" "<<mi; return 0;
}