newoj 2205 兔子与快乐水

题目描述

Yisin和兔兔之间经常分享好吃的。这天,他们得到了3堆肥宅快乐水。每堆都包含数量各异的快乐水。因为兔兔不能喝太多的快乐水,这会对胃产生不好的影响。所以Yisin决定给兔兔立下一个规矩:\

  1. 兔兔可以先从三堆快乐水中选择一堆;\
  2. 然后Yisin小姐姐从剩下两堆中进行选择一堆;\
  3. 最后一堆快乐水会按照兔兔的意愿进行分割(比如兔兔拿到了整堆,而Yisin小姐姐一瓶也没有)。
    这样子,Yisin和兔兔分别拥有了一些数量的快乐水。但是如果这个时候兔兔拥有的快乐水数目多于Yisin的话,他必须把这部分快乐水丢掉。如果Yisin多的话,她也会这么做。
    兔兔想要喝到尽可能多的快乐水。请你帮助他决策如何划分,好吗?
    你得独立回答k次询问。对于每次询问,会给出三堆快乐水的数量,你需要回答每次兔兔最多能喝到多少快乐水。
    让我们来看下面的示例:[3,4,1],兔兔可以选择第二堆快乐水,Yisin选择第一堆,然后剩下的第三堆里的唯一一瓶快乐水就交给Yisin。这样子两个人都拥有4瓶快乐水。\

输入描述

输入:第一行给出一个整数q (1≤q≤1000),代表q次询问。接下来是q行。
每一行包含三个整数a,b,c (1≤a,b,c≤10^16),代表三堆快乐水的数量。

输出描述

输出:输出q行。第i行对应了第i次询问,给出兔兔最多能喝到的快乐水的数量。

样例输入

4
1 3 4
1 10 100
10000000000000000 10000000000000000 10000000000000000
23 34 45

样例输出

4
55
15000000000000000
51

提示

这是一道思维题,注意开longlong来储存。我们不妨先考虑最极端的情况,再逐渐推最优情况,然后发现,其实最优情况一条式子就能搞定。——by awen

开始觉得写一堆if判断就行了,看到这个提示,想了好久(还是自己太弱)!

其实不管怎么分,想要喝到最多,如果是奇数的话,那就大家都不喝那一瓶,偶数平分就完事了

#include<stdio.h>
int main(){
    int q,i;
    long long a,b,c;
    scanf("%d",&q);
    for(i=0;i<q;i++){
        scanf("%lld%lld%lld",&a,&b,&c);
        printf("%lld\n",(a+b+c)/2);
    }
}
发布了11 篇原创文章 · 获赞 1 · 访问量 192

猜你喜欢

转载自blog.csdn.net/z591593455/article/details/102654842
今日推荐