NC21442. 教科书般的亵渎
描述
可爱的小雪最近沉迷一款叫做《炉石传说》的游戏,他特别喜欢玩术士这个职业,“偶数术强无敌!(破音)”,小雪经常边打边这么叫着。这个月小雪打算上传说,然而就在渡劫局的时候,小雪遇到了困境。此时小雪场上有m个随从,对方场上有n个随从,但是发现对手的场面非常强势,而小雪手里只有Q张法术卡“亵渎”,这张卡的效果是,对场上的所有随从(不分敌我)造成1点伤害,如果有随从因此死亡(随从生命值为0时则死亡),则再次发动此效果(不消耗额外的“亵渎”卡)。你可以帮帮小雪让他清理场面助他渡劫成功吗?
输入描述
第一行是一个正整数T,代表输入数据的组数。每组数据的第一行有三个整数,m,n,Q。m为小雪场上的随从数量,n为对手场上的随从数量(m,n不大于7),Q(0<=Q=<2)为小雪手上的“亵渎”卡的数量。第二行有m个整数ai,分别为小雪场上随从的生命值。第三行有n个整数bi,分别为对手场上随从的生命值。(生命值最大不超过99)
输出描述
对于每组输入数据,如果可以令对手场上的随从全部死亡,则输出“Legendary”(没有引号),否则输出“GG”(没有引号)。
示例1
输入:
2 2 2 1 1 2 3 4 6 6 2 1 1 4 5 1 4 1 9 1 9 8 10
输出:
Legendary GG
说明:
对于第一组数据,对面和自己都有2个随从,发动“亵渎”后,第一次使生命值为1的随从死亡,然后再次生效,重复三次后,所有随从死亡,那么小雪渡劫成功,输出Legendary。C++(g++ 7.5.0) 解法, 执行用时: 3ms, 内存消耗: 384K, 提交时间: 2023-07-25 09:43:33
#include<iostream> using namespace std; typedef long long ll; #include<algorithm> #include<vector> int main() { int t; cin >> t; while (t--) { int a[100] = { 0 }; int m, n, Q; cin >> m >> n >> Q; int sum = 0, t,maxn = 0; for (int i = 0; i < m; i++) { cin >> t; a[t] = 1; } for (int i = 0; i < n; i++) { cin >> t; a[t] = 1; maxn = max(maxn, t); } for (int i = 1; i <= maxn; i++) { if (a[i] == 0)sum++; } if (sum < Q)cout << "Legendary" << endl; else cout << "GG" << endl; } }
C(clang 3.9) 解法, 执行用时: 4ms, 内存消耗: 476K, 提交时间: 2020-02-18 20:43:51
#include <stdio.h> int main() { int T,m,n,Q,i,j,counter,t; int x[14]; scanf("%d",&T); while(T) { counter=0; scanf("%d%d%d",&m,&n,&Q); for(i=0;i<m+n;i++) scanf("%d",&x[i]); for(i=0;i<Q;i++) { t=counter; for(j=0;j<m+n;j++) x[j]--; for(j=0;j<m+n;j++) { if(x[j]==0) counter++; } if(t!=counter) Q++; } if(counter==m+n) printf("Legendary"); else printf("GG"); printf("\n"); T--; } return 0; }
C++ 解法, 执行用时: 3ms, 内存消耗: 456K, 提交时间: 2022-03-23 21:25:11
#include<bits/stdc++.h> using namespace std; int a[200]; int main() { int t; cin>>t; for(int i=1;i<=t;i++) { int m,n,k,sum=0,maxx=0,tt; cin>>m>>n>>k; memset(a,0,sizeof(a)); for(int i=1;i<=m;i++) { cin>>tt; a[tt]=1; } for(int i=1;i<=n;i++) { cin>>tt; a[tt]=1; if(tt>maxx) maxx=tt; } for(int i=1;i<=maxx;i++) { if(a[i]==0) sum++; } if(sum>=k) printf("GG\n"); else printf("Legendary\n"); } }
pypy3(pypy3.6.1) 解法, 执行用时: 44ms, 内存消耗: 18776K, 提交时间: 2020-08-28 15:36:48
for _ in range(int(input())): n, m, q = map(int, input().split()) nl = list(map(int, input().split())) ml = list(map(int, input().split())) kl = nl + ml kl.sort() t = 0 ans = 0 for x in kl: if x > t + 1: ans += x - t t = x elif x == t + 1: t += 1 if ans > q: print('GG') else: print('Legendary')