import java.util.Scanner;
public class Main {
public static void main(String[] arg) {
Scanner scanner = new Scanner(System.in);
// todo
}
}
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)breakprint(len(nxt), end = ' ')a = nxtprint('')
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]*nbrr=[[0]*205 for _ in range(n)]for i in range(n):for ci in map(int,input().split(' ')):brr[i][ci]=1cnt=0for cj in map(int,input().split(' ')):for i in range(n):if brr[i][cj]==0:arr[i]=0cnt+=1print(sum(arr),end=' ')print()