D-Runing Man(思维题)

ZB loves watching RunningMan! There's a game in RunningMan called 100 vs 100.

There are two teams, each of many people. There are 3 rounds of fighting, in each round the two teams send some people to fight. In each round, whichever team sends more people wins, and if the two teams send the same amount of people, RunningMan team wins. Each person can be sent out to only one round. The team wins 2 rounds win the whole game. Note, the arrangement of the fighter in three rounds must be decided before the whole game starts.

We know that there are N people on the RunningMan team, and that there are M people on the opposite team. Now zb wants to know whether there exists an arrangement of people for the RunningMan team so that they can always win, no matter how the opposite team arrange their people.

Input

The first line contains an integer T, meaning the number of the cases. 1 <= T <= 50.

For each test case, there's one line consists of two integers N and M. (1 <= N, M <= 10^9).

Output

For each test case, Output "Yes" if there exists an arrangement of people so that the RunningMan team can always win. "No" if there isn't such an arrangement. (Without the quotation marks.)

Sample Input

2
100 100
200 100

Sample Output

No
Yes

Hint

 

 

In the second example, the RunningMan team can arrange 60, 60, 80 people for the three rounds. No matter how the opposite team arrange their 100 people, they cannot win.

  • 题意分析:    要想赢,则至少赢两局。题意指出即在未比赛前,两支队伍就要给出自己的成员安排方案,Runing man 简称 A,the opposite team 简称 B).A要在未比赛前就拿出一个方案,即使B队知道这个方案无济于事。那就是尽可能的将人数平分为三,一方面保证至少赢两场。另一方面在输的那一局尽可能消耗B队的人数.
  • ①:         B队人数为偶数。因为A队人数多,所以要想赢,则将人数平均分为两组(赌一把)。 即两组 k , k 。则A队为了赢必须有两队也为k,另一队即使输也不要紧,但是为了消耗对方的人数,则应安排为k-1.(B对方的两组并不一定是第一局和第二局上场,上场次序可以是任意的).
  • ②:           B队人数为奇数。则将人数尽可能平分(放手一搏),即k,k-1。则A队三队人数为k-1,k-1,k-1。保证赢两局就足够了。
  • 题意很好理解,不过就是要理清思维。WA了十几次,唉,继续加油吧。(Andy)
  • AC Code                                                                              
#include<cstdio>
#include<cstring>
#include<algorithm> 
using namespace std;

int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		int a, b;
		scanf("%d %d",&a,&b);       //b的奇偶对应采取不同操作 
		int k;
		if(b%2 == 0)
		{
			k = b/2;	
			if(a >= 3*k-1) printf("Yes\n");
			else           printf("No\n");
		}
		else
		{
			k = b/2+1;
			if(a >= 3*k-3) printf("Yes\n");
			else           printf("No\n");	
		}          
	} 	
	return 0;
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值