题目描述:
「当你重新踏上旅途之后,一定要记得旅途本身的意义。
提瓦特的飞鸟、诗和城邦,女皇、愚人和怪物……都是你旅途的一部分。
终点并不意味着一切,在抵达终点之前,用你的眼睛,多多观察这个世界吧……」
嘉嘉最近迷上了原神这款游戏,不仅是因为可以享受精彩的剧情,同时还可以养成自己喜爱的角色,挑战许多奖励丰厚的怪物副本。为了通过困难的副本,他每天都在培养游戏中的角色,把他们变得更强。嘉嘉费劲心思培养这么多角色的目的,是为了组建出许多支强力的队伍,这样就可以轻松通过不同类型的困难副本。
在原神这款游戏中,一支队伍的最大角色人数为4。我们认定,一个角色的队伍定位可以简单地分为以下两种:输出、辅助。而且一个角色有且只有一种队伍定位。在嘉嘉眼里,要配置一支“强力的队伍”,必须要同时满足以下三个条件:1、队伍中的角色人数为4,即达到队伍的最大人数
2、队伍中至少要拥有一位输出角色
3、队伍中至少要拥有一位辅助角色也就是说,队伍中的4位角色不能均为输出角色,或者均为辅助角色,这是非常不合理的一支队伍。故一支合理的队伍,必须要至少包含一位输出角色和一位辅助角色。
在日复一日的培养下,现在嘉嘉已经拥有了n位输出角色和m位辅助角色,而且每位角色最多只能加入一个队伍。现在他想配置尽可能多的“强力的队伍”,你能告诉他最多能配置多少支“强力的队伍”吗?
输入:
第一行包含一个数字T(1≤T≤106)
接下来T行,每一行包括两个数字n和m,表示有n位输出角色和m位辅助角色(0≤n,m≤109)。
输出:
每组测试数据输出一行,表示最大配置的队伍数。
样例输入:
3 3 5 100 200 114514 1919810
样例输出:
2 75 114514
解题心路:
答主在这道题困了贼久,不知道怎么回事,做后面的题几次三番重新看这道题,开始以为暴力,结果看了下数据果断放弃,明白是道答主痛苦的数学题,虽然最后做了出来,但耗时贼长,累了累了。
代码实现:
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#include<string.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
if(n==0||m==0)printf("0\n");
else
{
int a=(n+m)/4;
if(a<=n&&a<=m)
{
printf("%d\n",a);
}
else if(a>n||a>m)
{
int min=m;
if(m>=n)min=n;
printf("%d\n",min);
}
}
}
}