题解 P5587 【打字练习】
想发一篇较为简洁易懂的题解,代码看起来长,实际上还是很好理解的,而且很多对称着写就行了
一道字符串签到题,比赛的时候小蒟蒻调了一个小时都没调出来一直RE,坑点还是不少的(主要是我太水了)
听其他题解中说后50%的数据是范文中也有退格键的情况
边做边判断退格键是不行的,因为可能有多个退格键,删的不止当前的字符(边做边判断似乎也会WA后50%数据),可以用栈
计算时间t的时候应转为double再除以60,否则t<60时整除60为0,答案除以t会RE
如果使用字符数组的话可以用gets与strlen,但是the `gets' function is dangerous and should not be used.,似乎会WA一些点
做了这题对字符串的读入等操作基础还是有所巩固的。。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<stack>
using namespace std;
string a[10005],b[10005];
stack<char> aa,bb;//储存去除退格后的字符
int n,m,cnt,t,al,bl;
int main() {
for (n=1; ; n++) {
getline(cin,a[n]);
if (a[n][0]=='E' && a[n][1]=='O' && a[n][2]=='F' && a[n][3]=='\0') break;
}
for (m=1; ; m++) {
getline(cin,b[m]);
if (b[m][0]=='E' && b[m][1]=='O' && b[m][2]=='F' && b[m][3]=='\0') break;
}
for (int i=1; i<n; i++) {
al=a[i].size(),bl=b[i].size();
while(!aa.empty()) aa.pop();
while(!bb.empty()) bb.pop();
for (int j=0; j<al; j++)
if (a[i][j]=='<') {
if (!aa.empty())
aa.pop();
} else aa.push(a[i][j]);//先扫一遍字符串,处理退格,将去除退格后的字符串存入栈
for (int j=0; j<bl; j++)
if (b[i][j]=='<') {
if (!bb.empty())
bb.pop();
} else bb.push(b[i][j]);
while(aa.size()<bb.size()) bb.pop();
while(aa.size()>bb.size()) aa.pop();//调为相同长度再比较
while(!aa.empty()) {
if (aa.top()==bb.top()) cnt++;//统计答案
aa.pop(),bb.pop();
}
}
scanf("%d",&t);
double time=1.0*t/60;
printf("%d",(int)(cnt/time+0.5));//四舍五入
}
题解 P5587 【打字练习】的更多相关文章
- 【LGR-060】洛谷10月月赛 I div.1&div.2
Preface 一边打一边写作文打的像shit,T2失智严重特判错了233 Orz Div1 Rank2的foreverlastnig聚聚,顺便说一句显然Luogu的比赛质量比以往显著提高了啊 以下题 ...
- vijos1760题解
题目: 现在有n个人,题目给出了他们每个人所在市县的编号.他们站在一个从左向右的队伍中.小L不在队列中.他想找到一个长度不超过D的区域,使他能够找到最多的不同地方的朋友.要求输出能找到的朋友所在不同市 ...
- 一些noip模拟题一句话题解
Problem A: 序列 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 12 Solved: 9[Submit][Status][Web Boar ...
- 【AC自动机】【树状数组】【dfs序】洛谷 P2414 [NOI2011]阿狸的打字机 题解
这一题是对AC自动机的充分理解和树dfs序的巧妙运用. 题目背景 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机. 题目描述 打字机上只有28个按键,分别印有26个小写英文字母和' ...
- 【题解】P4886快递员
[题解]P4886 快递员 淀粉质好题!!!加深了我对点分治的理解.最近分治学了好多啊. 题目大意 给定你一颗有边权的树,再给你\(m\)和点对,请你在树上选出来一个点,使得所有点对到这个点的距离的最 ...
- 题解 最长上升序列2 — LIS2
最长上升序列2 - LIS2 Description 已知一个 1 ∼ N 的排列的最长上升子序列长度为 K ,求合法的排列个数. Input 输入一行二个整数 N , K ( K ≤ N ≤ 15) ...
- CSS 实现打字效果
JS实现 最近做项目的时候需要实现一个字符逐个出现的打字效果,在网上一搜有个不错的jQuery插件Typed.js,效果很赞 <div class="element"> ...
- javascript实现键盘自动打字效果
最近在网上看到一个字符逐个出现的打字效果,觉得挺有趣的,想一想基本实现思路就是设置一个定时器逐然后逐个向容器中添加字符,于是就基于jQuery写了一个简单版的. <!DOCTYPE html&g ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
随机推荐
- 关于全球唯一标识GUID的生成
1.c#生成GUID的几种方式 (1)生成标准的标志符 (36位标准) var strguid = Guid.NewGuid().ToString(); 结果:B2A5AB40-EE29-4791-9 ...
- ffmpeg rtp rtmp udp 推流命令
推组播 组播地址指的范围是224.0.0.0—239.255.255.255 ffmpeg -re -i chunwan.h264 -vcodec mpeg2video -f mpeg2video u ...
- elasticsearch 5.5 query 过程 源码分析
(1)请求 transfer to 任意node 节点 标记为coordinate node server入口函数 transportSearchAction doExecute方法 coordin ...
- Educational Codeforces Round 82 (Rated for Div. 2) A-E代码(暂无记录题解)
A. Erasing Zeroes (模拟) #include<bits/stdc++.h> using namespace std; typedef long long ll; ; in ...
- WebGL_0001:3D页面的重置分辨率和横竖屏事件
1,事件 重置分辩率事件 window.addEventListener("resize", a, !1) 横竖屏切换事件 window.addEventListener(&quo ...
- Codeforces #454 div1 C party(状态压缩bfs)
题意: 给你N个点的一幅图,初始图中有M条边,每次操作可以使得一个点连接的所有点变成一个团,问你最少多少次操作可以使得整个图变成一个团. 解法: 因为N很小 所以我们可以二进制压缩来表示一个点与其他点 ...
- tomcat-embeded-core源码编译
使用spring-boot创建web工程时,默认采用embeded tomcat作为容器,实际使用过程中,可能会需要对其中的某些功能做微调,而tomcat又没有给出预留配 ,这时就需要对tomcat- ...
- var s=+newDate();
var s=+newDate(); 解释如下:=+是不存在的; +new Date()是一个东西; +相当于.valueOf(); 看到回复补充一下.getTime()这个也是得到毫秒数 //4个结果 ...
- 【已解决】使用 yarn 安装时,报错node_modules\node sass:Command failed.
npm install -g mirror-config-china --registry=http://registry.npm.taobao.org npm install node-sass y ...
- nodejs使用promise实现sleep
个人博客 地址:http://www.wenhaofan.com/article/20181120180225 let sleep = function (delay) { return new Pr ...