题意
给出 (n,m,k) ,表示 (k) 名玩家打牌,共 (n) 张牌,(m) 张王,保证 (k|n) ,记得分为 拿到最多王的玩家手中王数 (-)拿到第二多王的玩家手中的王数,求得分最大值
思路
首先,每人有 (n/k) 张牌,
假设有玩家手气特好,抽一张一个王,那他最多有 (maxn=max{m,n/k}) 张牌,
在此情形下,还剩 (m-maxn) 张王,则拿到第二多王数应该为 (leftlceildfrac{m-maxn}{k-1} ight ceil) 。
于是,两者相减,这题就没了。
代码
#include<bits/stdc++.h>
#define re read()
using namespace std;
const int MAXN=1e5;
int read(){
#define ge getchar()
int x=0,sgn=1;char ch=ge;
for(;!isdigit(ch);ch=ge)if(ch=='-')sgn=-1;
for(;isdigit(ch);ch=ge)x=(x<<1)+(x<<3)+(ch^48);
return x*sgn;
}
int n,m,k,T;
int main (){
T=re;
while(T--){
n=re;m=re;k=re;
int maxn=min(n/k,m),minn=max(0,(m-maxn+k-2)/(k-1));
printf("%d
",maxn-minn);
}
return 0;
}