CF975A Aramic script 题解
Content
定义一个字符串的根为字符串中不同种类的字符按字典序非降序排列得到的字符串。例如 \(\texttt{aaa}\) 的词根为 \(\texttt{a}\),\(\texttt{babb}\) 的词根为 \(\texttt{ab}\),\(\texttt{abczfee}\) 的词根为 \(\texttt{abcefz}\),等等。
现在给出 \(n\) 个字符串,求不同的根的个数。
数据范围:\(1\leqslant n\leqslant 10^3\),字符串长度不超过 \(10^3\)。
Solution
我们看完题之后分析一下就明白,这道题目主要是三个操作:
- 字符串的每个字符按照字典序非降序排列。
- 将重复的字符去掉。
- 判断是否已经出现过。
那我们将每个操作依次分析一下吧。首先是第一个操作,这里教大家用一个非常好用的技巧——用 \(\texttt{sort}\) 直接排序。你没听错,\(\texttt{sort}\) 就是强大到可以直接将第一个操作一刀切。我们假设现在的字符串为 \(s\),然后我们可以通过调用 \(\texttt{sort(s.begin(), s.end());}\)(其实也就相当于将字符串彻头彻尾地按照字典序非降序排列)就可以得到一个里面所有的字符都是按照字典序非降序排列的字符串了。
然后是第二个操作,排序完之后,我们直接遍历字符串,如果当前扫到的字符不和前面的字符相等就加到这个字符串的根里面去,直到扫完为止,这时我们就可以得到一个字符串的根了。
最后是第三个操作,我们可以开一个 \(\texttt{map}\) 来直接将字符串是否出现映射到一个变量上去,这样就可以直接判断字符串的根是否出现过,不需要再用 \(\texttt{hash}\) 判断了。
\(\texttt{STL}\) 有时确实能让你的代码简洁很多,不妨多试试有关于 \(\texttt{STL}\) 的题目。
Code
int n, ans;
string s;
map<string, int> vis;
int main() {
getint(n);
while(n--) {
cin >> s;
string root = "";
sort(s.begin(), s.end());
int len = s.size();
_for(i, 0, len - 1)
if(s[i] != s[i - 1]) root += s[i];
if(!vis[root]) {ans++, vis[root] = 1;}
}
writeint(ans);
return 0;
}
CF975A Aramic script 题解的更多相关文章
- Codeforces Round #478 (Div. 2) ABCDE
A. Aramic script time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- Codeforces Round #478 Div2 975A 975B 975C 975D
A. Aramic script 题目大意: 对于每个单词,定义一种集合,这个集合包含且仅包含单词中出现的字母.给你一堆单词,问有多少种这种集合. 题解: 状压,插入set,取size #in ...
- CF泛做
CF Rd478 Div2 A Aramic script 题意:给定几个字符串,去重后,求种类 思路:直接map乱搞 #include<bits/stdc++.h> using name ...
- Codeforces Round #478 (Div. 2)
题目链接:http://codeforces.com/contest/975 A. Aramic script time limit per test:1 second memory limit pe ...
- xss练习,alf.nu/alert1,1-12
觉得自己很菜,故找一些题来做,随便找了下.记一下通关攻略 https://alf.nu/alert1 第一关 题目:warmup function escape(s) { return '<sc ...
- Vulnhub靶场题解
Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...
- [Bugku]Web题解
bugku地址链接:https://ctf.bugku.com 1.web2 浏览器就显示一堆动态笑脸,时间长了密集恐惧症了. 解法1: F12查看源码 解法2: 地址栏输入: view-source ...
- CF1144A Diverse Strings 题解
Content 我们定义一个字符串是合法的,当且仅当这个字符串是"连续排列"(按照字母表顺序排序).现在给出 \(n\) 个字符串 \(s_1,s_2,s_3,...,s_n\), ...
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
随机推荐
- JVM的Xms Xmx PermSize MaxPermSize区别
Eclipse崩溃,错误提示:MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) sp ...
- Jenkins系列-权限管理
在实际工作中,存在多个团队都需要Jenkins来实现持续交付,但是又希望不同团队之间进行隔离,每个项目有自己的view, 只能看到自己项目的jenkins job. 但是,jenkins默认的权限管理 ...
- 强化学习之MountainCarContinuous(注册自己的gym环境)
目录 1. 问题概述 2. 环境 2.1 Observation & state 2.2 Actions 2.3 Reward 2.4 初始状态 2.5 终止状态- Episode Termi ...
- QQ 表情大全
rt,以下是比较常用的 QQ 表情简写: /kk:快哭了 /cy:呲牙 /ll:流泪 /dk:大哭 /yiw:疑问 /jk:惊恐 /se:色 /kel:可怜 /xyx:斜眼笑 /wx:微笑 /xk:笑 ...
- NOIP2021 游记
不要挂分不要挂分不要挂分不要挂分不要挂分不要挂分不要挂分不要挂分不要挂分不要挂分不要挂分不要挂分不要挂分不要挂分不要挂分不要挂分释迦牟尼脚绽莲花菩提达摩你真伟大天上天下唯我独尊如来佛祖太上老君耶稣耶稣 ...
- RNA-seq 生物学重复相关性验证
根据拿到的表达矩阵设为exprSet 1.用scale 进行标准化 数据中心化:数据集中的各个数字减去数据集的均值 数据标准化:中心化之后的数据在除以数据集的标准差. 在R中利用scale方法来对数据 ...
- Can't connect to HTTPS URL because the SSL module is not available. - skipping
今天用pip3安装第三方库的时候报了这样一个错: Can't connect to HTTPS URL because the SSL module is not available. - skipp ...
- 框架学习-MyBatis(01)
1.MyBatis是持久层框架 什么是持久化: 狭义:把数据永久性的保存到数据当中 广义:针对于数据库的所有操作都称为持久化操作,CreateReadUpdateDelete操作 2.有哪些持久层框架 ...
- UE4打包启动失败:RunUAT.bat ERROR: AutomationTool failed to compile.
打包配置正常的情况下,出现下面Log: RunUAT.bat ERROR: AutomationTool failed to compile. 基本上,可以先排查下任务管理器中是不是有UE4Edito ...
- 年底巩固下 CS 知识「GitHub 热点速览 v.21.49」
作者:HelloGitHub-小鱼干 期末到了!是时候来一波 CS 复习资料了,从本科基础知识开始到实用编程技术.本周 GitHub 热点趋势榜给你提供了最全的复习资料:清华的 CS 四年学习资料.W ...