洛谷链接&CF 链接

本篇题解为此题较简单做法较少码量,并且码风优良,请放心阅读。

题目简述

给你一个均为小写字母的字符串,如果它的子串同时满足:

  1. 三个连着的辅音字母。

  2. 这一段连着的辅音字母不是全部一样的。

就认为它不合法。

现在要求用最少的空格隔开这个字符串,使得它变成合法的。

思路

首先定义记录当前位置是否是元音字母的数组 \(a\),并维护它,如下:

for(int i = 0; i < n; i ++) {
bool flag = false;
for(int j = 0; j < 5; j ++)
if(str[i] == c[j]) flag = true;
a[i] = flag;
}

接着直接根据题目要求模拟即可,定义 \(num\) 记录当前连续辅音字母的个数,当这个个数 \(\ge 3\) 之后输出空格即可,这里需要注意:需要先输出空格再输出字母!

经过以上分析及代码片段,很容易即可写出代码了:

#include<iostream>
using namespace std; char c[10] = {'a', 'e', 'i', 'o', 'u'}; // 元音字母数组
string str;
bool a[3005]; // 记录是否是元音字母 int main(){
cin >> str;
int n = str.length();
// 预处理 a 数组
for(int i = 0; i < n; i ++) {
bool flag = false;
for(int j = 0; j < 5; j ++)
if(str[i] == c[j]) flag = true;
a[i] = flag;
}
int num = !a[0]; // 初始化 num
cout << str[0]; // 先输出第一个字母
for(int i = 1; i < n; i ++) {
// 如果是辅音字母
if(!a[i]) {
num ++; // 增加计数
if(num >= 3 && !(str[i - 2] == str[i] && str[i - 1] == str[i])) {
cout << ' '; // 满足条件输出空格
num = 1; // num 初始化
}
}
else num = 0; // 元音字母
cout << str[i]; // 正常输出
}
return 0;
}

提交记录

\[\text{The End!}
\]

CF858C 题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. 关于sass(scss)、less、postcss、stylus的简介与区别

    为什么会出现css预处理器 ​ CSS不是一种编程语言,仅仅只能用来编写网站样式,在web初期时,网站的搭建还比较基础,所需要的样式往往也很简单.但是随着用户需求的增加以及网站技术的升级,css一成不 ...

  2. python 实现限流

    固定窗口 固定窗口就是记录一个固定的时间窗口内的操作次数,操作次数超过阈值则进行限流. def fix_window_limit(redis_obj, period, max_count): &quo ...

  3. 性能优化陷阱之hash真的比strcmp快吗

    最近网上冲浪的时候看到有人分享了自己最近一次性能优化的经验.我向来对性能是比较敏感的,所以就点进去看了. 然而我越看越觉得蹊跷,但本着"性能问题和性能优化要靠性能测试做依据",我不 ...

  4. kubernetes自动扩缩容[HPA控制器 horizontal pod autoscaler]

    kubernetes自动扩缩容[HPA控制器 horizontal pod autoscaler] #查看当前hpa控制器版本: [root@k8s-master01 ~]# kubectl get ...

  5. Java交换map的key和value值

    在Java中,我们都知道直接交换Map的key和value是不被允许的,因为Map的接口设计是基于key-value对的,其中key是唯一的,并且是不可变的(在HashMap等常见的实现中,虽然key ...

  6. NOIP模拟71

    T1 签到题 解题思路 每个点的度数对于 \(c\) 取 \(\bmod\) 有余数答案的贡献就加一. 证明太难,略.... code #include <bits/stdc++.h> # ...

  7. golang 的 net/http 和 net/rpc 的区别, rpc 效率比 http 高?

    在Go语言中,net/http 和 net/rpc 是两个不同的包,它们分别用于实现不同的网络通信模式: net/http: net/http 包主要用于构建Web服务和客户端,它实现了HTTP协议, ...

  8. 利用QEMU模拟大端序机器

    简介 当前我们安装虚拟机,一般小端机器比较多,有时候想模拟大端机器测试程序,这时就有模拟大端机器的需求. 参考:利用 QEMU USER 模式运行 mips 程序 - sinpo828 - 博客园 ( ...

  9. Manim使用心得

    Manim 使用心得 manim 做视频还是挺方便的. 当然,如果你每一次都从 0 开始写,那么你会崩溃. 所以需要找到自己做视频的风格,以此总结出一套通用的 python 模板代码,然后调用. 例如 ...

  10. springmvc组件说明

    DispatcherServlet:前端控制器,也称为中央控制器,它是整个请求响应的控制中心,组件的调用由它统一调度. HandlerMapping:处理器映射器,它根据用户访问的 URL 映射到对应 ...