NC232722. 佛
描述
输入描述
全文第一行输入一个正整数 ,表示数据组数。
对每组数据,第一行输入两个正整数 。
接下来输入一个 的矩阵,第 行第 列表示第 个礼物的第 种颜色 。
接下来输入一个长度为 的序列,表示序列 。
数据保证同一行之内 互不相同(即一个礼物上不会有两种相同的颜色),且信息 互不相同。
输出描述
对每组数据输出一行 个数,表示每次得到信息之后的结果。
示例1
输入:
2 3 3 1 2 3 2 3 4 3 4 5 3 2 1 3 2 1 2 2 3 1 3 1 2
输出:
3 2 1 2 1
说明:
pypy3 解法, 执行用时: 2895ms, 内存消耗: 57712K, 提交时间: 2022-05-10 21:18:35
for cas in range(int(input())): n, m = map(int, input().split()) c = [] for i in range(n): c.append(list(map(int, input().split()))) a = [i for i in range(n)] for tmp in input().split(): b = int(tmp) nxt = [] for x in a: for y in c[x]: if y == b: nxt.append(x) break print(len(nxt), end = ' ') a = nxt print('')
C++ 解法, 执行用时: 507ms, 内存消耗: 684K, 提交时间: 2022-05-06 20:17:22
#include<bits/stdc++.h> using namespace std; int main(){ int t,n,m,i,j,v[205][205],x,s; scanf("%d",&t); while(t--){ memset(v,0,sizeof v); scanf("%d%d",&n,&m); for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ scanf("%d",&x); v[i][x]=1; } } for(i=1;i<=m;i++){ s=0; scanf("%d",&x); for(j=1;j<=n;j++){ if(!v[j][0]){ if(v[j][x]) s++; else v[j][0]=1; } } printf("%d ",s); } printf("\n"); } return 0; }
Python3 解法, 执行用时: 2854ms, 内存消耗: 5440K, 提交时间: 2022-05-19 10:14:33
T=int(input()) for _ in range(T): n,m=map(int,input().split(' ')) arr=[1]*n brr=[[0]*205 for _ in range(n)] for i in range(n): for ci in map(int,input().split(' ')): brr[i][ci]=1 cnt=0 for cj in map(int,input().split(' ')): for i in range(n): if brr[i][cj]==0: arr[i]=0 cnt+=1 print(sum(arr),end=' ') print()