Problem K. Katryoshka
Input file: katryoshka.in
Output file: standard output
Balloon Color: White
The Egyptian football team will be in Russia for the World Cup, of course they all would like to buy
souvenirs for their families. Luckily they met the king of souvenirs of the famous Russian souvenir
Matryoshka; the king makes his masterpiece Katryoshka using different kinds of pieces: wooden eyes,
wooden mouths, and wooden bodies. He can form a nice Katryoshka using one of the following ways:
• Two eyes and a body.
• Two eyes, mouth and a body.
• Eye, mouth and a body.
If the king has n eyes, m mouths and k bodies, what is the largest number of Katryoshkas that can be
made by the king?
Input
The first line of the input contains a single integer 1 ≤ T ≤ 100 the number of test cases. Each test case
consists of a single line containing 3 space separated integers ‘n m k’ the number of eyes, mouths and
bodies respectively; where 0 ≤ n, m, k ≤ 108
.
Output
For each test case output a line displaying the case number and a single integer which is the largest
number of nice Katryoshka pieces.
Example
katryoshka.in standard output
4
1 2 3
0 11 2
14 21 23
90 24 89
Case 1: 1
Case 2: 0
Case 3: 14
Case 4: 57
简单的贪心就好了;
首先肯定是选1~1~1比例的,
第二种肯定是不选的,如果 eyes 还有剩余,再选第一种方案;
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<string>
#include<bitset>
#include<ctime>
#include<deque>
#include<stack>
#include<functional>
#include<sstream>
typedef long long ll;
using namespace std;
typedef unsigned long long int ull;
#define maxn 100005
#define ms(x) memset(x,0,sizeof(x))
#define Inf 0x7fffffff
#define inf 0x3f3f3f3f
const int mod = 1e9 + 7;
#define pi acos(-1.0)
#define pii pair<int,int>
#define eps 1e-5
#define pll pair<ll,ll>
#define lson 2*x
#define rson 2*x+1
long long qupower(int a, int b) {
long long ans = 1;
while (b) {
if (b & 1)ans = ans * a;
b >>= 1;
a = a * a;
}
return ans;
}
inline int read() {
int an = 0, x = 1; char c = getchar();
while (c > '9' || c < '0') {
if (c == '-') {
x = -1;
}
c = getchar();
}
while (c >= '0'&&c <= '9') {
an = an * 10 + c - '0'; c = getchar();
}
return an * x;
}
int main() {
ios::sync_with_stdio(false);
freopen("katryoshka.in","r",stdin);
int t;
cin>>t;
int cnt=0;
while(t--){
cnt++;
int n,m,k;
cin>>n>>m>>k;
int ans=0;
int tt=min(n,m);
ans+=tt;
n-=tt;
if(n>0){
ans+=n/2;
}
ans=min(ans,k);
cout<<"Case "<<cnt<<": ";
cout<<ans<<endl;
}
}