破损的键盘(codevs 4650)】的更多相关文章

 题目: 你有一个破损的键盘.键盘上的所有键都可以正常工作,但有时Home键或者End键会自 动按下.你并不知道键盘存在这一问题,而是专心地打稿子,甚至连显示器都没打开.当你 打开显示器之后, 展现在你面前的是一段悲剧的文本.你的任务是在打开显示器之前计算出 这段悲剧文本. 输入包含多组数据.每组数据占一行,包含不超过100000个字母.下划线.字符“[”或 者“]”.其中字符“[”表示Home键, “]”表示End键.输入结束标志为文件结束符(EOF).输 入文件不超过5MB.对于每组数据,输…
破损的键盘(悲剧文本)(Broken Keyboard(a.k.a. Beiju Text),Uva 11988) 题意描述 你在输入文章的时候,键盘上的Home键和End键出了问题,会不定时的按下.你却不知道此问题,而是专心致志地打稿子,甚至显示器都没开.当你打开显示器之后,展现你面前的数一段悲剧文本.你的任务是在显示器打开前计算出这段悲剧的文本. 给你一段按键的文本,其中'['表示Home键,']'表示End键,输入结束标志是文件结束符(EOF). 样例输入 This_is_a_[Beiju…
题目描述 Description 有一天,你需要打一份文件,但是你的键盘坏了,上面的"home"键和"end"键会时不时地按下,而你却毫不知情,甚至你都懒得打开显示器,当你打开显示器之后,出现在你的面前的是一段悲剧的文本. 输入描述 Input Description 输入只有一行,即这份文件,这份文件只包含小写字母和'['以及']',用'['代替"home"键,用']'代替"end"键. 输出描述 Output Descri…
/* 之前一直不重视链表 (好吧说实话主要是看着板子都是指针就怂了T.T) 这道题比较基础 应用了链表的思想 数组模拟指针 遇到的问题就是跑着跑着光标跳到前面或者跳到后面 我们用next储存每个点下一个点在哪 这样我们不仅能往开头和结尾插入 中间任意一个地方都ok. 这题数据范围题目描述小了 0.0 */ #include<iostream> #include<cstdio> #include<cstring> #define maxn 100010 using nam…
你用了一个有点坏掉的键盘打字,该键盘会自动按下”Home”键与“End”键,直到打完整个内容以前,你都没有发现到这个问题.本题给定键盘输出的字串(包含Home与End),请你输出该字串在屏幕显示的内容. Input输入有多组测试数据,每组一列,其长度介于1 ~ 100,000之间,包含小写的字母及两个符号'['与']','['表示Home键(被键盘自动按下),']'表示End键.输入数据以EOF表示结束,其数据长度不超过5MB. Output请你输出该字串在屏幕上显示的内容. Sample In…
原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3139 题意就是输入文本,若是遇到"["光标就移到最前面,遇到"]"光标就移到最后. 在这段代码中,在for循环中如果不用n来代替strlen(s+1),最后就会超时,以后写代码的时候我会注意到这点. #include<iostream…
这题是很好的学习用数组实现链表的例子. 原题链接 UVa11988 题意 输入一段文本,字符'['表示Home键,']'表示End键.输出屏幕上面的结果. 思路 难点在于在字符串的头和尾插入字符,如果直接利用数组操作,会超时,最好的办法就是利用单向链表. 刘汝佳大哥的代码 #include<cstdio> #include<cstring> const int maxn=100000+5; char str[maxn]; int next[maxn]; int cur,last;…
s[] 数组用来保存原有的字符序列 nex[] 数组记录打印的下标顺序 C++11 代码如下: #include<iostream> #include<cstring> using namespace std; #define maxn 100006 char s[maxn]; int nex[maxn], n; int main() { ) { , last = ; nex[] = ; char ch; ; i <=strlen(s + ); i++) { ch = s[i…
传送门 题目大意:一个字符串,将[]内的字符提前. 题解:链表,数组元素高效交换 cur表示目前元素插入下标为cur的元素后面. 所以,假设目前把下标为i的元素插到cur后面. 那么,next[i]=next[cur],为cur后面的元素成为i后面的元素 next[cur]=i,cur后面的元素就是i了. 如果遇到'[',说明要把后面到'['插到开头了,cur赋值为0, last表示最后输出答案的下标. 如果遇到']',那么cur=last,继续从最后一个元素开始插入. 代码: #include…
题目链接 维护一个链表,以及当前位置.head.tail的指针,模拟就行了 #include<iostream> #include<cstring> #include<cstdio> using namespace std; char s[100010]; int cnt,head,tail,pos; struct Data{ char c; int nxt; } a[100010]; int main() { while(scanf("%s",s)…