LOJ6212-「美团 CodeM 决赛」melon

来源:互联网 发布:淘宝会员怎么注册 编辑:程序博客网 时间:2024/06/15 15:26

题目描述
Alice 和 Bob 开始了吃瓜比赛。现在有 nnn 个单位的瓜,两个人每次可以拿起 111 到 LLL 某个整数单位的瓜,拿了 kkk 单位的瓜后必须花 kkk 单位的时间吃掉手里的瓜才能继续拿瓜吃,直到瓜全都被吃完。而且 Alice 和 Bob 不能拿对方手里的瓜。假设拿瓜是可以在瞬间完成的。还假设 Alice 的反应速度总是比 Bob 快,意思是:若两人在一瞬间内同时拿瓜,则必定是 Alice 先拿完瓜 Bob 再拿瓜。

现在两人在比赛开始的瞬间同时拿瓜,且双方的目的都是吃到尽可能多的瓜,求 Alice 最多能吃多少瓜。
输入格式
本题有多组数据。
第一行一个整数 TTT 表示有 TTT 组数据。
接下来 TTT 行,每行两个整数分别表示 n,Ln,Ln,L。
输出格式
共 TTT 行,每行输出一个整数表示对应数据的答案。
样例
样例输入

1
9 8
样例输出

8
样例解释

Alice 在比赛开始后的瞬间拿走了 888 单位的瓜,这时无论 Bob 怎么拿都只能吃到不超过 111 单位的瓜。
如果 Alice 一开始拿的瓜不到 888 单位,Bob 就会拿走其他所有瓜。
所以 Alice 最多能吃到 888 单位的瓜。
数据范围与提示
1≤T≤10001\le T\le 10001≤T≤1000
1≤n,L≤10181\le n,L\le 10^{18}1≤n,L≤10
​18
​​

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;typedef long long LL;const LL INF=1e18;const int MAXN=1e5+5;const int MOD=1e9+7;int main(){    int T;    scanf("%d",&T);    while(T--)    {        LL n,L;        scanf("%lld%lld",&n,&L);        if(n<=L) printf("%lld\n",n);        else if(n>L&&n<=2*L) printf("%lld\n",L);        else    printf("%lld\n",(LL)((n+1)/2));    }    return 0;}
原创粉丝点击