CCF-CSP第33次认证第一题 --《词频统计》

5719. 词频统计 - AcWing题库

在学习了文本处理后,小P 对英语书中的 n 篇文章进行了初步整理。

具体来说,小 P 将所有的英文单词都转化为了整数编号。

假设这 n 篇文章中共出现了 m 个不同的单词,则把它们从 1 到 m 进行编号。

这样,每篇文章就简化为了一个整数序列,其中每个数都在 1 到 m 范围内。

现给出小 P 处理后的 nn 篇文章,对于每个单词 ii(1≤i≤m),试统计:

  1. 单词 i出现在了多少篇文章中?
  2. 单词 i 在全部文章中总共出现了几次?
输入格式

输入共 n+1 行。

输入的第一行包含两个正整数 n 和 m,分别表示文章篇数和单词编号上限。

输入的第 i+1 行包含由空格分隔的若干整数,其中第一个整数 li 表示第 i 篇文章的长度(单词个数);接下来 li 个整数表示对应的整数序列,序列中每个整数均在 11 到 m 范围内,各对应原文中的一个单词。

输出格式

输出共 m 行。

第 i 行输出由空格分隔的两个整数 xi 和 yi,表示共有 xi 篇文章包含单词 i,总计出现次数为 yi。

数据范围

全部的测试数据满足 0

输入样例:
4 3
5 1 2 3 2 1
1 1
3 2 2 2
2 3 2
输出样例:
2 3
3 6
2 2
样例解释

单词 22 在:

  • 文章 1 中出现两次;
  • 文章 3 中出现三次;
  • 文章 4 中出现一次。

因此 x2=3,y2=6。

题解:

#include 
using namespace std;

int main()
{
	int n,m;
	cin>>n>>m;
	//set s;不能放在这
	vector v1(101,0); //单词在所以文章总共出现的次数
	vector v2(101,0); //单词出现的文章篇数
	for(int i=0;i>len; //文章的单词个数
		set s; //对每一篇文章新建一个集合
		for(int i=0;i>word;
			s.insert(word); //对每篇文章的单词进行去重记录
			v1[word]++; //统计单词出现次数
		}
		for(int arr : s){
			v2[arr]++; //对每篇文章含有的单词计数
		}	
	}
	
	for(int i=1;i<=m;i++){
		cout<

你可能感兴趣的:(CSP,数据结构,c++,学习)