zzulioj1864(jichu)

1864: 爐石傳說

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 226  Solved: 71

SubmitStatusWeb Board

Description

最近韜韜周圍的小夥伴們都在玩爐石傳說, 感覺好厲害的樣子, 可是韜韜早都不玩遊戲了呢, 自從入坑ACM之後。“不能沒有我的蠟燭”, 韜韜天天都能聽到這樣的句子 - -

   聽說爐石傳說開放了新冒險模式——探險者協會!開放了一種新的技能:“發現”!

   它的效果是提供三張卡牌(隨從卡 / 法術卡), 你可以獲得任意一張, 並丟掉另外兩張。

   現在你可以使用 n 次“發現”技能, 當然到最後你會得到 n 張卡牌, 如今已經給出每次使用技能後可以選擇的三張卡的屬性, 韜韜很想知道能否獲得至少 a 張隨從卡以及 b 張法術卡。

   親愛的小夥伴你可以幫幫韜韜嘛?

Input

第一行是測試樣例數t (1 <= t <= 1000) 每組輸入數據的第一行是三個正整數 n, a, b含義見上述 數據範圍1 <= n <= 1000 , 1 <= a, b <= n 接下來 n 行, 每行三個數(0或1), 0代表隨從卡, 1代表法術卡

Output

對於每組數據, 輸出一行 YES 或者 NO

Sample Input

2
1 1 0
1 1 1
3 1 2
0 1 1
0 0 0
1 1 1

Sample Output

NO
YES

HINT

對於第一組樣例, n=1,a=1, b=0, 使用1次“發現”技能, 至少獲得1張隨從卡.由於提供的3張都是法術卡(3個1), 所以不能達到要求


   對於第二組樣例, n=3,a=1, b=2, 使用3次“發現”技能, 至少獲得1張隨從卡, 2張法術卡. 那麼只要在第一次和第三次選法術卡, 第二次選隨從卡即可

AC-code:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
	int t,n,ca1,ca2,ca3,num[3],a,b;
	scanf("%d",&t);
	while(t--)
	{
		num[0]=num[1]=num[2]=0;
		scanf("%d%d%d",&n,&a,&b);
		for(int i=1;i<=n;i++)
		{
			scanf("%d%d%d",&ca1,&ca2,&ca3);
			if(ca1==ca2&&ca2==ca3&&ca1==0)
			 num[0]++;
			else if(ca1==ca2&&ca2==ca3&&ca1==1)
			 num[1]++;
			else num[2]++;
		}
		a-=num[0],b-=num[1];
		if(a<0) a=0;
		if(b<0) b=0;
		if((a+b)>n) printf("NO\n");
		else
		{
			if(num[2]>=(a+b))
			 printf("YES\n");
			else
			 printf("NO\n");
		}
	}
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章