【CCF-CSP】202403-4 词频统计

题目描述

在学习了文本处理后,小 P 对英语书中的 𝑛n 篇文章进行了初步整理。 具体来说,小 P 将所有的英文单词都转化为了整数编号。假设这 𝑛n 篇文章中共出现了 𝑚m 个不同的单词,则把它们从 11 到 𝑚m 进行编号。 这样,每篇文章就简化为了一个整数序列,其中每个数都在 11 到 𝑚m 范围内。

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

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

输入格式

从标准输入读入数据。

输入共 𝑛+1n+1 行。

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

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

题解:

#include<bits/stdc++.h>
#define int long long
#define up(l,r,i) for(int i=l,END##i=r;i<=END##i;++i)
#define dn(r,l,i) for(int i=r,END##i=l;i>=END##i;--i)
using namespace std;
#define IOS ios::sync_with_stdio("false");cin.tie(0);cout.tie(0);
#define freopen freopen("IN.in","r",stdin);freopen("OUT.out","w",stdout);
typedef pair<int,int> PII;
const int N=1e5+10;
const int INF=0x7ffffff;
signed main(){
    IOS
    int m,n;
    cin>>n>>m;
    vector<int> tot_v(m+1,0);
    vector<int> tot_s(m+1,0);
    while(n--){
        int len;
        vector<bool> seen(m+1,false);
        cin>>len;
        for(int i=0;i<len;i++){
            int x;
            cin>>x;
            if(!seen[x]){
                seen[x]=true;
                tot_s[x]++;
            }
            tot_v[x]++;
        }
    }
    for(int i=1;i<=m;i++){
        cout<<tot_s[i]<<" "<<tot_v[i]<<endl;
    }
    return 0;
}

Hash。

签到题

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值