【c++】LUOGU P1808 单词分类

STL大法好!!! 
使用sort()将string排序,map去重并统计即可。

最短代码如下:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 string s;int n;
 4 map<string,int> m;
 5 int main(){
 6     cin>>n;
 7     while(n--)cin>>s,sort(s.begin(),s.end()),m[s];
 8     cout<<m.size();
 9     return 0;
10 }
时间: 2024-08-29 18:41:28

【c++】LUOGU P1808 单词分类的相关文章

洛谷 P1808 单词分类_NOI导刊2011提高(01)

P1808 单词分类_NOI导刊2011提高(01) 题目描述 Oliver为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类. 两个单词可以分为一类当且仅当组成这两个单词的各个字母的数量均相等. 例如“AABAC”,它和“CBAAA”就可以归为一类,而和“AAABB”就不是一类. 现在Oliver有N个单词,所有单词均由大写字母组成,每个单词的长度不超过100.你要告诉Oliver这些单词会被分成几类. 输入输出格式 输入格式: 输入文件的第一行为单词

洛谷P1808 单词分类

题目描述 Oliver为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类. 两个单词可以分为一类当且仅当组成这两个单词的各个字母的数量均相等. 例如“AABAC”,它和“CBAAA”就可以归为一类,而和“AAABB”就不是一类. 现在Oliver有N个单词,所有单词均由大写字母组成,每个单词的长度不超过100.你要告诉Oliver这些单词会被分成几类. 输入输出格式 输入格式: 输入文件的第一行为单词个数N,以下N行每行为一个单词. 输出格式: 输出文件

Luogu P1101 单词方阵

明明是一道水题,我还找不出 bug 来...原本在 DFS 途中记录单词串,只好使用笨方法,在结尾加一个 for 记录单词串.终于过了. 思路:枚举图中每一个点进行 DFS,途中判断访问的点是否为连续元素("yizhong"字符串中连续),如果不是返回:进行下一层 DFS,如果返回值 True 则直接层层返回 True,强行退出. 1 /* P1101 单词方阵 2 * Au: GG 3 */ 4 #include <cstdio> 5 #include <cstdl

老外教你:如何将单词分类记忆,事半功倍

老外教你:如何将单词分类记忆,事半功倍 Part1: The Lexical Categories of Language Whenever you are learning a foreign language, it is important to be familiar with the lexical categories of a language. The words in a given language play different roles in the transmissi

单词分类

1.单词分类 [问题描述] chffy为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类. 两个单词可以分为一类当且仅当组成这两个单词的各个字母的数量均相等. 例如“AABAC” ,它和“CBAAA”就可以归为一类,而和“AAABB”就不是一类. 现在chffy有N个单词,所有单词均由大写字母组成,每个单词的长度不超过100 .你要告诉chffy 这些单词会被分成几类. [输入格式] 输入文件的第一行为单词个数N ,以下N 行每行为一个单词. [输出格式

Luogu 1019 单词接龙

题目链接:https://www.luogu.org/problemnew/show/P1019 思路: 审题很重要. 题中有一些要注意的点: 1.每个单词都最多在“龙”中出现两次 2.两个单词合并取的是较小的重叠部分,特判也基于此 剩下就是稍微有些复杂的模拟了. 值得提的一点,本题中$check$函数可使用$substr$来优化代码量. 代码: #include <cstdio> #include <cctype> #include <cstring> #includ

luogu 1101单词方阵

题目描述 给一nXn的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red]可以[/color]交叉,因此有可能共用字母.输出时,将不是单词的字母用"*"代替,以突出显示单词.例如: 输入: 8 输出: qyizhong *yizhong gydthkjy gy****** nwidghji n*i***** orbzsfgz o**z***

luogu 1019 单词接龙 dfs细节

P1019 单词接龙 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at 和 atide 间不能相连. 输入输出格式 输入格式: 输入的第一行为一个单独的整数n (n<=20)表示单词数,以下n 行每行有一个单词,

luogu P1019 单词接龙

一道深搜题 应该很早就做然而并没有 这跟成语接龙一点也不像不能为所欲为 然后需要注意一下 相邻的两部分不能存在包含关系就是说如果存在包含关系,就不能标记为使用过. 每个单词最多出现两次 这样提前先预处理一下每两个单词之间的重复部分 用sam[i][j]表示第i个单词后接第j个单词的重叠的部分 然后dfs,记得用vis标记一下该单词使用过几次 #include<cstdio> #include<iostream> #define sev en using namespace std;