LOJ6212-「美团 CodeM 决赛」melon

题目描述
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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值