洛谷P1808 单词分类_NOI导刊2011提高(01) 字符串排序
洛谷P1808 单词分类_NOI导刊2011提高(01)
题目描述
Oliver为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类。
两个单词可以分为一类当且仅当组成这两个单词的各个字母的数量均相等。
例如“AABAC”,它和“CBAAA”就可以归为一类,而和“AAABB”就不是一类。
现在Oliver有N个单词,所有单词均由大写字母组成,每个单词的长度不超过100。你要告诉Oliver这些单词会被分成几类。
输入格式
输入文件的第一行为单词个数N,以下N行每行为一个单词。
输出格式
输出文件仅包含一个数,表示这N个单词分成的类数
输入输出样例
3
AABAC
CBAAA
AAABB
2
说明/提示
对于70%的数据满足N≤100。 对于100%的数据满足N≤10000。
Solution
Algorithm(1)
对每一个字符串自身进行一次内部排序
再对所有字符串进行排序
初始化ans=1;因为至少会有一类的
枚举所有字符串,若str[i]!=str[i+1],ans++;
最后输出ans
最多运算次数:
100*log(100)*10000+10000*log(10000)+10000
约等于O(nlog(n))吧?
Code(100分)
事实证明这还是能过的
并不需要后面的更为复杂的算法
#include<iostream>//不想OI一场空,千万别用万能头
#include<algorithm>//快排sort()
#include<cstring>
using namespace std;
bool cmpchar(char ta,char tb){
return ta<tb;
}
bool cmpstr(string ta,string tb){
return ta<tb;
}
string word[];
int n;
int main()
{
cin>>n;
int ans=;
for(int i=;i<n;i++){
cin>>word[i];
sort(&word[i][],&word[i][word[i].size()],cmpchar);
}
sort(&word[],&word[n],cmpstr);
for(int i=;i<n-;i++)
if(word[i]!=word[i+])
ans++;
cout<<ans;
return ;
}
其思想就是:分类找间隔,类数=间隔+1
ALgorithm(2)
借用STL<map>
map,可以把它当成是一个自定义数组
map<string,bool>word
就是新建一个数组
名为word
下表是string类型的
值则是bool类型的
而且可以像普通数组那样直接访问
word[str]==1;
Code(100分)
#include<iostream>//不想OI一场空,千万别用万能头
#include<algorithm>//快排sort()
#include<cstring>
#include<cstdio>
#include<map>
using namespace std;
map<string,bool>word;
int n,ans;
string t;
int main()
{
scanf("%d",&n);
for(int i=;i<n;i++)
{
cin>>t;
sort(t.begin(),t.end());
if(!word[t])
{
ans++;
word[t]=;
}
}
cout<<ans;
return ;
}
哈哈哈,sort还能这样用哟!
str.begin() str.end()会返回str首尾的地址
这比
sort(&word[i][0],&word[i][word[i].size()],cmpchar);
好用多了吧?
STL大法好!
洛谷P1808 单词分类_NOI导刊2011提高(01) 字符串排序的更多相关文章
- 洛谷 P1808 单词分类_NOI导刊2011提高(01)
P1808 单词分类_NOI导刊2011提高(01) 题目描述 Oliver为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类. 两个单词可以分为一类当且仅当 ...
- 洛谷P1809 过河问题_NOI导刊2011提高(01)
To 洛谷.1809 过河问题 题目描述 有一个大晴天,Oliver与同学们一共N人出游,他们走到一条河的东岸边,想要过河到西岸.而东岸边有一条小船. 船太小了,一次只能乘坐两人.每个人都有一个渡河时 ...
- 题解 P1808 【单词分类_NOI导刊2011提高(01)】
大家用的方法都太好了!! 蒟蒻小金羊来发一篇玄学堆排. STL大法好! (附有核心code详解,完整code) 核心:两次排序,第一次自我排序,第二次整体排序. 核心code1: string str ...
- Shortest Path Codeforces - 59E || 洛谷P1811 最短路_NOI导刊2011提高(01)
https://codeforces.com/contest/59/problem/E 原来以为不会..看了题解发现貌似自己其实是会的? 就是拆点最短路..拆成n^2个点,每个点用(i,j)表示,表示 ...
- 洛谷——P1795 无穷的序列_NOI导刊2010提高(05)
P1795 无穷的序列_NOI导刊2010提高(05) 题目描述 有一个无穷序列如下: 110100100010000100000… 请你找出这个无穷序列中指定位置上的数字 输入输出格式 输入格式: ...
- 洛谷P1776 宝物筛选_NOI导刊2010提高(02)
P1776 宝物筛选_NOI导刊2010提高(02) 题目描述 终于,破解了千年的难题.小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物……这下小FF可发财了,嘎嘎.但是这里的宝物实在是太多了, ...
- 洛谷 P1795 无穷的序列_NOI导刊2010提高(05)
P1795 无穷的序列_NOI导刊2010提高(05) 题目描述 有一个无穷序列如下: 110100100010000100000… 请你找出这个无穷序列中指定位置上的数字 输入输出格式 输入格式: ...
- 洛谷P1776 宝物筛选_NOI导刊2010提高(02)(多重背包,单调队列)
为了学习单调队列优化DP奔向了此题... 基础的多重背包就不展开了.设\(f_{i,j}\)为选前\(i\)个物品,重量不超过\(j\)的最大价值,\(w\)为重量,\(v\)为价值(蒟蒻有强迫症,特 ...
- 【洛谷P1795 无穷的序列_NOI导刊2010提高(05)】模拟
分析 map搞一下 AC代码 #include <bits/stdc++.h> using namespace std; map<int,int> mp; inline int ...
随机推荐
- Centos7 下搭建STF平台
STF,全名Smartphone Test Farm---智能手机测试平台,可以提供远程真机调试的功能,目前仅支持Android设备. 环境准备 1.Node.js 8 安装Node.js $ cur ...
- SSH(二)
SSH框架整合的系统架构,Action.Service.Dao.SessionFactory.DataSource都可以作为Spring的Bean组件管理 使用HibernateDaoSupport基 ...
- https原理总结
博客搬家: https原理总结 最近在公司项目的服务器上做一些内部接口,要求使用https,于是花时间研究了一波.我们熟知的http在传输时未对数据进行加密,在传输一些敏感信息时存在着不小的安全隐患. ...
- latex使用总结
1 输入双引号以及单引号: 双引号:按两下 Tab键上方的键, 再按两下单引号键. 单引号:按一下Tab键上方的键,再按一下单引号键. 原文地址 2 时间复杂度的O写法: $\mathcal{O}$ ...
- 2018icpc南京现场赛-I Magic Potion(最大流)
题意: n个英雄,m个怪兽,第i个英雄可以打第i个集合里的怪兽,一个怪兽可以在多个集合里 有k瓶药水,每个英雄最多喝一次,可以多打一只怪兽,求最多打多少只 n,m,k<=500 思路: 最大流, ...
- 初入机器学习,安装tensorflow包等问题总结
学习python,机器学习(maching-lerning).深度学习(deep-learning)等概念也是耳熟能详.我最近从新手开始学习maching-learning知识,不过课程偏向基本的理论 ...
- Go语言实现:常见排序算法
冒泡排序: 时间复杂度:O(n^2) 稳定性:稳定 //冒泡排序 //相邻两位交换,12交换,23交换,34交换,把最大的数放到最右边 //利用flag标记可以避免无效循环 func BubbleSo ...
- 使用Java实现三个线程交替打印0-74
使用Java实现三个线程交替打印0-74 题目分析 三个线程交替打印,即3个线程是按顺序执行的.一个线程执行完之后,唤醒下一个线程,然后阻塞,等待被该线程的上一个线程唤醒.执行的顺序是一个环装的队列 ...
- WLAN802.11
IEEE 802.11,1997年,原始标准(2Mbit/s,播在2.4GHz).DSSS, FHSS.该协议的一大缺点是它提供了太多的选择使得互操作性很难实现.所以它不严密,更像是一个beta标准, ...
- k8s系列---yaml文件格式
https://www.bejson.com/validators/yaml_editor/ yaml文件大致格式解析,通过上面这个解析网站,可以看到yaml文件解析的格式长什么样,如果知道字典和列表 ...