题目背景
你正在参加一场道法考试。这次的道法考试题目全部都是问答题。
题目描述
有 n 道题目,每道题标准答案都是 m 个整数,代表答案包含的知识点的编号。
而你对于第 i(1≤i≤n)道题的作答是 li 个整数,代表作答的知识点编号。
对于每一道题 i,如果你作答的 li 个整数包含了这道题对应的所有 m 个整数,则得两分;否则,这道题得零分。
注意:即使你的作答中包含标准答案里没有的知识点,也不会影响评分。评分依据有且仅有上一行这一条。
求这场考试中你最后得到的总分数。
输入格式
第一行两个整数 n 和 m,含义见题面。
第 2∼n+1 行每行 m 个整数,第 i 行的内容表示第 i−1 题标准答案包含的知识点编号,保证单个题目的知识点编号没有重复,用空格隔开。
第 n+2∼2n+1 行每行有 li+1 个整数。第一个整数为 li,接下来的 li 个整数表示你作答的知识点编号。
输出格式
一行一个整数,表示你的分数。
输入输出样例
输入 #1
2 2 1 3 4 6 2 1 4 7 1 2 3 4 6 7 8
输出 #1
2
说明/提示
样例 1 解释
题号 | 标准答案编号 | 你作答的编号 | 得分 | 理由 |
---|---|---|---|---|
1 | 1,3 | 1,4 | 0 | 知识点 3 没有作答 |
2 | 4,6 | 1,2,3,4,6,7,8 | 2 | 作答了 4,6 知识点,额外作答的知识点不扣分 |
数据规模与约定
对于 100%100% 的数据,1≤n,m≤10^3,1≤li≤2×10^3,输入的所有知识点编号 c 均满足 1≤c≤5×10^3。保证对于某一道题,作答的 li 个知识点编号没有重复,但对不同题目作答的知识点编号可能有重复。
#include<bits/stdc++.h>
using namespace std;
int n,m,t,a,b[1001][1001],s;
bool f[1001][1001];
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&b[i][j]);for(int i=1;i<=n;i++){scanf("%d",&t);for(int j=1;j<=t;j++){scanf("%d",&a);for(int k=1;k<=m;k++)if(a==b[i][k]&&!f[i][k])f[i][k]=1;}}for(int i=1;i<=n;i++){bool ff=1;for(int j=1;j<=m;j++){if(!f[i][j]){ff=0;break;}}if(ff)s+=2;}cout<<s;}