日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[TJOI2010]阅读理解

發布時間:2023/12/13 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [TJOI2010]阅读理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述
英語老師留了N篇閱讀理解作業,但是每篇英文短文都有很多生詞需要查字典,為了節約時間,現在要做個統計,算一算某些生詞都在哪幾篇短文中出現過。

輸入輸出格式
輸入格式:
第一行為整數N,表示短文篇數,其中每篇短文只含空格和小寫字母。

按下來的N行,每行描述一篇短文。每行的開頭是一個整數L,表示這篇短文由L個單詞組成。接下來是L個單詞,單詞之間用一個空格分隔。

然后為一個整數M,表示要做幾次詢問。后面有M行,每行表示一個要統計的生詞。

輸出格式:
對于每個生詞輸出一行,統計其在哪幾篇短文中出現過,并按從小到大輸出短文的序號,序號不應有重復,序號之間用一個空格隔開(注意第一個序號的前面和最后一個序號的后面不應有空格)。如果該單詞一直沒出現過,則輸出一個空行。

輸入輸出樣例
輸入樣例#1:
3
9 you are a good boy ha ha o yeah
13 o my god you like bleach naruto one piece and so do i
11 but i do not think you will get all the points
5
you
i
o
all
naruto
輸出樣例#1:
1 2 3
2 3
1 2
3
2
說明
對于30%的數據,1 ≤ M ≤ 1,000

對于100%的數據,1 ≤ M ≤ 10,000,1 ≤ N ≤ 1000

每篇短文長度(含相鄰單詞之間的空格) ≤ 5,000 字符,每個單詞長度 ≤ 20 字符

每個測試點時限2秒

這好像是個trie樹的題目,但是蒟蒻的我已經忘了,但仔細想一想其實不用trie樹,只用map,vector就可以了!
對于輸入按照string型輸入,因為我并不會用map套vector,所以我對于每個單詞映射成一個數字,每當一行出現該單詞時就將該行存入該vector下,在查詢時就查詢該單詞映射下數字的vector中存儲的所有數字,同時因為一行可能同時出現多次一個單詞所以需要進行判重。

代碼:

#include<iostream> #include<cstdio> #include<map> #include<vector> #include<cstring> using namespace std; int n,m,cnt; int flag[500000]; map<string,int>match; vector<int>G[100010]; int main(){cin >> n;for(int i = 1; i<=n; i++){int opt ;cin >> opt ;for(int j = 1; j<=opt; j++){string op;cin >> op;if(!match[op]){cnt++;match[op] = cnt;//映射成數字G[cnt].push_back(i);}else {G[match[op]].push_back(i); }}} cin >> m;for(int i = 1; i<=m; i++){string opt;cin >> opt;memset(flag,0,sizeof(flag));for(int j = 0; j<G[match[opt]].size(); j ++){if(flag[G[match[opt]][j]])continue;//判重flag[G[match[opt]][j]] = 1;cout << G[match[opt]][j] << ' ';}cout <<'\n';}return 0; }

轉載于:https://www.cnblogs.com/Euplectella/p/10092940.html

總結

以上是生活随笔為你收集整理的[TJOI2010]阅读理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。