题意:

给出一个文本编辑器的容量,给出老板输入的字符串,小写字母代表文本,大写字母代表命令:

L:光标左移;

R:光标右移;

S:在insert模式和另一个输入模式中切换;

D:删除光标后面的一个字符;

B:删除光标前面的一个字符;

C:复制;

V:粘贴;

思路:

模拟。结果这题我们WA了全场。赛后回去检查,发现了我愚蠢的地方。。。就是D操作时,如果在复制状态下,我把删除的起点选错了。。。教训啊!!!

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<map>
#include<vector>
#include<stack>
#include<queue>
#include<string>
#include<climits>using namespace std;string ans,cc,in;int main()
{int t;cin>>t;while(t--){int lim;cin>>lim>>in;int len=in.length();int insertmode=1;int copy=-1;int pos=0;ans="";cc="";int real1=-1,real2=-1;for(int i=0;i<len;i++){if(in[i]>='a'&&in[i]<='z'){if(insertmode==1){if(ans.length()>=lim)continue;ans.insert(pos,1,in[i]);pos++;}else {if(pos==ans.length()) {if(ans.length() == lim) continue ;ans+=in[i];pos++;}else {ans[pos] = in[i];pos++;}}copy=-1;}else{int tmplen=ans.length();if(in[i]=='L'){if(pos>0)pos--;}else if(in[i]=='R'){// cout<<"tt="<<tmplen<<endl;if(pos<(tmplen))pos++;}else if(in[i]=='S'){if(insertmode==1)insertmode=0;else insertmode=1;copy=-1;}else if(in[i]=='D'){if(copy==1){int tt=real1;real1=min(tt,pos);real2=max(tt,pos);//cout<<real1<<" "<<real2<<endl;ans.erase(real1,real2-real1);//ans.erase(pos,real2-real1);这里写错了}else if(pos<tmplen)ans.erase(pos,1);copy=-1;}else if(in[i]=='B'){// cout<<"==="<<ans<<endl;//cout<<"pos="<<pos<<endl;if(pos>0){ans.erase(pos-1,1);pos--;}copy=-1;// cout<<"---"<<ans<<endl;}else if(in[i]=='C'){if(copy==-1){real1=real2=pos;copy=1;}else{   cc="";int tt=real1;real1=min(tt,pos);real2=max(tt,pos);// cout<<real1<<" "<<real2<<endl;// cout<<pos1<<" "<<pos1<<endl;// puts("----");cc=ans.substr(real1,real2-real1);// puts("----");// cout<<"cc="<<cc<<endl;copy=-1;}}else if(in[i]=='V'){if(insertmode==1){//cout<<cc<<" "<<pos<<" "<<ans<<endl;if(cc.length()==0)continue;if(cc.length()+ans.length()>lim)continue;ans.insert(pos,cc);pos+=cc.length();   }else {//cout<<cc<<" "<<pos<<" "<<ans<<endl;if(pos+cc.length()>lim)continue;ans.replace(pos,cc.length(),cc);pos+=cc.length();}copy=-1;}}//cout<<cc<<endl;//  cout<<"----"<<ans<<" "<<pos<<" "<<pos1<<" "<<pos2<<endl;}if(ans.length()==0)cout<<"NOTHING"<<endl;else cout<<ans<<endl;}return 0;
}

hihoCoder1228(2015北京网络赛B题)相关推荐

  1. 2015北京网络赛 G题 Boxes bfs

    Boxes Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/contest/acmicpc2015beijingonl ...

  2. hihoCoder1233(2015北京网络赛H题)

    转载自:http://blog.csdn.net/queuelovestack/article/details/48625899 题意: 有n个卡槽,放有体积不同的n个空盒子,每次你可以移动一个空盒子 ...

  3. hihoCoder 1227 2015 北京网络赛 A题

    题意: 给定m个点,然后从这m个点里找到一个点作为圆心,求一个最小的半径使得圆内刚好有n个点,没有压线的点. 思路: 预处理一下各点间的距离,暴力枚举圆心,然后找到排序后的第n个判断即可.坑点:n&g ...

  4. hdu5492(2015合肥网络赛I题)

    题意: n*m的格子,每个格子有权值,我们要从左上角走到右下角,只能向下走或者向右走,求走到终点走过的格子的方差的最小值. 思路: 被这题坑了,我还是太蠢. 我们可以暴力(∑Ai)^2,取最优就好了. ...

  5. hdu5455(2015沈阳网络赛F题)

    题意: 给出一个串,问用题中定义的那些串来组成这个串最少要用多少个. 思路: 没啥说的,注意一下输入的串中可能出现除了c和f的字母. 代码: #include<cstdio> #inclu ...

  6. hdu5489(2015合肥网络赛F题)

    转载自:http://blog.csdn.net/lwt36/article/details/48774103 题意: 给出一个数列,在其中删除连续的L个数字,使得剩余的数字LIS最大,输出此LIS. ...

  7. hdu5491(2015合肥网络赛H题)

    题意: 给出三个数字D.s1和s2,用L来表示D的二进制表示中1的个数,L在区间[s1,s2]中,我们要找到离D最近的并且大于D的一个数字,且这个数字的L也落在区间[s1,s2]中. 思路: 一直超时 ...

  8. hdu5461(2015沈阳网络赛L题)

    题意: 给出一个数列,我们要在这里找出两个数,使得题意中那个表达式最大. 思路: 排两个序就好了啊,看代码一下就懂了. 代码: #include <cstdio> #include < ...

  9. hdu5452(2015沈阳网络赛C题)

    题意: 给出一个无向图和一个此图的生成树,让我们求一个本图的最小割边集,割边集只包括生成树中的一条边,让割边集的边数最少,输出数目. 思路: 并查集+暴力. 代码: #include<cstdi ...

最新文章

  1. 微信支付服务器demo,集成微信支付(附带demo)
  2. 轻芒王俊煜:我是如何设计信息流的?
  3. idae 安装的插件怎么删掉_X7 IE阻止我安装插件怎么办
  4. SDWebImage的使用说明
  5. 我会铭记这一天:2016年10月25日
  6. centos mysql 实战 第一节课 安全加固 mysql安装
  7. 3号团队-团队任务5:项目总结会
  8. AD导入原理图库PCB库文件 最强原理图PCB库
  9. 物联网技术体系(一)
  10. 虚拟机教程(一) 启用win10自带虚拟机
  11. 高清HDMI高清编码器(HDMI网络传输器)使用及前景
  12. AutoMapper Project To OrderBy Skip Take 正确写法
  13. linux服务器上查看显卡(nvidia)型号
  14. 40-50岁的男人喜欢什么样的女人呢?
  15. list中的元素升序排列
  16. 苹果16g不够用怎么办_孩子不够自信怎么办?父母学会用这4个方法,孩子长大更优秀自信...
  17. GYM 2015 ACM Syrian Collegiate Programming Contest
  18. 阿里云OSS获取文件强制下载的签名URL
  19. Altium Designer 网表导入常见问题 网表导入教程 同步原理图与PCB
  20. word中图片排版问题

热门文章

  1. [Python语音识别项目笔记] 3softmax函数
  2. 科大星云诗社动态20210320
  3. PIC单片机入门_PICC头文件介绍
  4. PIC单片机入门_MPLAB 集成开发环境和 MPASM编译器
  5. 在asp.net中使用 log4net 笔记
  6. syslinux引导GRUB4DOS
  7. PowerDesigner设计数据库
  8. javascript动态创建可拖动、最大化、最小化的层
  9. Eclipse Tomcat调试timeout超时怎么办
  10. 图解CSS的padding,margin,border属性