Content

由于题目要求是在太过复杂,请见原题面查看。

Solution

这题明显是一个大模拟,那么废话少说,我们开始吧。

首先就是要找到所有的字母,比如说样例,其中底下加了^ 号的就是所有字母的位置:

Upomoc! Lpv s nm pkrl sv smglsnk.
^^^^^^ ^^^ ^ ^^ ^^^^ ^^ ^^^^^^^

把它们的位置存下来,然后就可以输出第一个提示了——直接将所有字母替换成 . 即可。

自然而然地,字母出现的次数 \(cnt\) 也可以模拟得出来了。然后,我们就可以求出来前 \(\dfrac{1}{3}\) 和前 \(\dfrac{2}{3}\) 的字母的位置了。

然后,我们先从 \(\dfrac{1}{3}\) 的字母出现的位置开始找起,一直到字符串末尾,如果有元音,那么第三个提示就只输出 \(\dfrac{1}{3}\) 的字母的位置之前的所有字符以及之后的所有元音字母,否则输出 \(\dfrac{2}{3}\) 的字母的位置之前所有的字符。

至于第二个提示就不用再说了吧,直接输出 \(\dfrac{1}{3}\) 的字母的位置之前所有的字符即可。

那么这道题目就算做完了,作为省选题算是很水的(毕竟这是 10 多年以前了)。

Code

#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <map>
using namespace std; string s;
int pk[57];
map<int, int> pk2; int main() {
getline(cin, s);
int len = s.size();
for(int i = 0; i < len; ++i)
if((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z')) {
pk[++pk[0]] = i; //将字母出现的位置记录下来
pk2[i] = pk[0];
printf(".");
} else printf("%c", s[i]);
puts("");
int key1 = floor(pk[0] / 3.0 + 0.5), key2 = floor((pk[0] * 2) / 3.0 + 0.5), vowel = 0;
// printf("%d %d\n", key1, key2);
for(int i = 0; i < len; ++i)
if(pk2[i] >= 1 && pk2[i] <= key1) printf("%c", s[i]);
else if(pk2[i]) printf(".");
else printf("%c", s[i]);
puts("");
for(int i = pk[key1] + 1; i < len; ++i)
if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u' || s[i] == 'A' || s[i] == 'E' || s[i] == 'I' || s[i] == 'O' || s[i] == 'U') {
vowel = 1;
break;
}
if(vowel) {
for(int i = 0; i < len; ++i)
if(pk2[i] >= 1 && pk2[i] <= key1) printf("%c", s[i]);
else if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u' || s[i] == 'A' || s[i] == 'E' || s[i] == 'I' || s[i] == 'O' || s[i] == 'U') printf("%c", s[i]);
else if(pk2[i]) printf(".");
else printf("%c", s[i]);
} else {
for(int i = 0; i < len; ++i)
if(pk2[i] >= 1 && pk2[i] <= key2) printf("%c", s[i]);
else if(pk2[i]) printf(".");
else printf("%c", s[i]);
}
}

LuoguP3880 [JLOI2008]提示问题 题解的更多相关文章

  1. [JLOI2008]提示问题

    题目描述 最近在JLOI网上的一个流行游戏中,选手要回答很难的问题.假如在规定时间内不能回答,系统将给出1个提示,之后再依次给出第2,3个提示.出现在答案中的是字母和下列字符: '.',',',':' ...

  2. 【数论】小A进学校

    小A进学校 题目描述 近日,清华大学挖出来一个明清古墓.小A决定冒充考古系科研人员去盗墓.他遇到的第一个难关是来自校门口保安的质疑,因为小没有清华学生证,所以保安决定通过问问题的方式验证小A的身份. ...

  3. [题解]codevs1001 舒适的路线

    h3 { font-family: Consolas; color: #339966 } .math { font-family: Consolas; color: gray } 题目描述 Descr ...

  4. NOIP 2008提高组第三题题解by rLq

    啊啊啊啊啊啊今天已经星期三了吗 那么,来一波题解吧 本题地址http://www.luogu.org/problem/show?pid=1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们 ...

  5. NOI题库刷题日志 (贪心篇题解)

    这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制:  1000ms  内存限制:  65536kB 描述 在一个平面上,如果有两个点( ...

  6. codevs3500 快速幂入门题解

    codevs3500 快速幂入门题解 //我也是抄的题解 题目描述 Description 输入3个数a,b,c,求a^b mod c=? 输入描述 Input Description 三个数a,b, ...

  7. [题解]扫雷Mine

    // 此博文为迁移而来,写于2015年2月6日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vrft.html 1088 ...

  8. NOIP 2012 Day2T2 借教室题解

    NOIP 2012 Day2T2 借教室题解 题目传送门:http://codevs.cn/problem/1217/ 题目描述 Description 在大学期间,经常需要租借教室.大到院系举办活动 ...

  9. Code[VS] 2370 LCA 题解

    Code[VS] 2370 小机房的树 题解 RMQ 树链剖分 题目描述 Description 小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同 ...

随机推荐

  1. AGC050B Three Coins

    做的时候有思考到是否能转化成移动点问题,但是没有清晰的把他解释出来. NOIP的时候也一样,T3也有考虑到是否能转为差分,但是也没有清晰的写出来. 自己做题的时候应尽量保证草稿纸和思绪的清晰,而不是在 ...

  2. 洛谷 P2257 - YY的GCD(莫比乌斯反演+整除分块)

    题面传送门 题意: 求满足 \(1 \leq x \leq n\),\(1 \leq y \leq m\),\(\gcd(x,y)\) 为质数的数对 \((x,y)\) 的个数. \(T\) 组询问. ...

  3. Atcoder Grand Contest 005 E - Sugigma: The Showdown(思维题)

    洛谷题面传送门 & Atcoder 题面传送门 记先手移动棋子的树为红树,后手移动棋子的树为蓝树. 首先考虑一个性质,就是如果与当前红色棋子所在的点相连的边中存在一条边,满足这条边的两个端点在 ...

  4. 快速傅里叶变换(FFT)随笔

    终于学会了FFT,水一篇随笔记录一下 前置知识网上一大堆,这里就不多赘述了,直接切入正题 01 介绍FFT 这里仅指出FFT在竞赛中的一般应用,即优化多项式乘法 一般情况下,计算两个规模为$n$的多项 ...

  5. Oracle-判断一个表的一列是否在另一张表的一列存在

    select * from A where exists(select 1 from B where A.a = B.b)  

  6. markdown语法之如何使用LaTeX语法编写数学公式

    CSDN-markdown语法之如何使用LaTeX语法编写数学公式 目录 目录 正文 标记公式 行内公式 块级公式 上标和下标 分数表示 各种括号 根号表示 省略号 矢量表示 间隔空间 希腊字母 特殊 ...

  7. CentOS7忘记root密码如何重置

    1.重启服务器 2.修改启动文件 3.修改密码 4.重启,测试 ①   重启服务器,按"e"键进入修改系统开机项界面 ②   修改启动文件 "ro" -> ...

  8. PC端页面转换成手机端页面的分辨率问题的理解

    PC端页面转换成手机端页面的分辨率问题的理解 px vw rem 假如就以a4纸模式为设计图 ,在a3纸模式中设计,然后设计出来展示在不同的a4纸模式上 通常是 750px -> 100vw / ...

  9. C++中的排序

    下面网站解释比较好 http://www.cnblogs.com/heyonggang/archive/2013/11/03/3404371.html 1. qsort(C中的函数加上stdlib.h ...

  10. add more

    # -*- coding: utf-8 -*- print('123', 123) print(type('123'), type(123)) # string, integer /ˈintidʒə/ ...