1864: 爐石傳說
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 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
Sample Output
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;
}