常州大學新生寒假訓練會試 F-大佬的生日大禮包
阿新 • • 發佈:2019-02-08
題目戳這裡
對於三種禮物來說,都需要用到一個a、一個b,所以抽象來說每個禮物對應a、b、c。於是二分答案,見程式碼
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <cstdio>
#include <string>
#include <cstring>
#include <vector>
#include <set>
#define LL long long
#define INF 0x3f3f3f3f
#define MOD 998244353
const int maxn = 1e5 + 5;
using namespace std;
bool judge(int a, int b, int c, int x){
a -= x;
b -= x;
if(a < 0 || b < 0) return false;
if(a + b + c < x) return false;//保證了有x份
if(a > b) swap(a,b);
if(b > c) swap(b,c);
if (a + b < x / 2) return false;//保證不相鄰
return true;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
int l = 0, r = min(a,b);
int ans = 0, m;
while(l <= r){
m = (l + r) / 2;
if (judge(a,b,c,m)){
ans = m;
l = m + 1;
}
else r = m - 1;
}
printf("%d\n",ans);
}
}
/*
2
4 4 0
1 1 1
*/