题解 CF1359A Berland Poker
Posted werner-yin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解 CF1359A Berland Poker相关的知识,希望对你有一定的参考价值。
题意
给出 (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;
}
以上是关于题解 CF1359A Berland Poker的主要内容,如果未能解决你的问题,请参考以下文章
Educational Codeforces Round 88 (Rated for Div. 2) A. Berland Poker
Educational Codeforces Round 88 (Rated for Div. 2) A. Berland Poker