题意:模拟文本操作

思路:模拟

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std; #define MAXN 10005
int M;
char cmd[MAXN];
char str1[MAXN],str2[MAXN];
char copyStr[MAXN]; void f(){
int i,j,k,len,len1,len2,lencp;
len=strlen(cmd);//命令长度
len1=len2=;//文本长度
lencp=;//剪贴板长度
int pos=;//光标位置
int mode=;//0 "insert mode",1 "overwrite mode"
int copyState=;//0 "NOTHING",1 "START"
int copyPosition1,copyPosition2;
for(i=;i<len;++i){
if(cmd[i]>='a'&&cmd[i]<='z'){
if(copyState==)copyState=;
if(len1<M){
if(pos==len1){
str1[len1++]=cmd[i];
str1[len1]='\0';
++pos;
}
else{
if(mode==){
for(j=k=;j<pos;++j)str2[k++]=str1[j];
str2[k++]=cmd[i];
for(j=pos;j<len1;++j)str2[k++]=str1[j];
str2[k]='\0';
strcpy(str1,str2);
++len1;
++pos;
//cout<<len1<<endl;
//cout<<str1[0]<<endl;
}
else{
for(j=k=;j<pos;++j)str2[k++]=str1[j];
str2[k++]=cmd[i];
for(j=pos+;j<len1;++j)str2[k++]=str1[j];
str2[k]='\0';
strcpy(str1,str2);
++pos;
}
}
}
}
else if(cmd[i]=='L'){
if(pos>)--pos;
}
else if(cmd[i]=='R'){
if(pos<len1)++pos;
}
else if(cmd[i]=='S'){
if(copyState==)copyState=;
if(mode==)mode=;//变为重写
else mode=;//变为插入
}
else if(cmd[i]=='D'){
if(copyState==){
copyState=;
copyPosition2=pos;
if(copyPosition1<copyPosition2){
for(j=k=;j<copyPosition1;++j)str2[k++]=str1[j];
for(j=copyPosition2;j<len1;++j)str2[k++]=str1[j];
str2[k++]='\0';
strcpy(str1,str2);
len1=len1-(copyPosition2-copyPosition1);
}
else{
for(j=k=;j<copyPosition2;++j)str2[k++]=str1[j];
for(j=copyPosition1;j<len1;++j)str2[k++]=str1[j];
str2[k]='\0';
strcpy(str1,str2);
len1=len1-(copyPosition1-copyPosition2);
}
}
else{
if(pos<len1){
for(j=k=;j<pos;++j)str2[k++]=str1[j];
for(j=pos+;j<len1;++j)str2[k++]=str1[j];
str2[k]='\0';
strcpy(str1,str2);
--len1;
}
}
}
else if(cmd[i]=='B'){
if(copyState==)copyState=;
if(pos>){
for(j=k=;j<pos-;++j)str2[k++]=str1[j];
for(j=pos;j<len1;++j)str2[k++]=str1[j];
str2[k]='\0';
strcpy(str1,str2);
--len1;
--pos;
}
}
else if(cmd[i]=='C'){
if(copyState==){
copyState=;
copyPosition1=pos;
}
else{
copyState=;
copyPosition2=pos;
if(copyPosition1!=copyPosition2){
if(copyPosition1<copyPosition2){
for(j=copyPosition1,k=;j<copyPosition2;++j)
copyStr[k++]=str1[j];
copyStr[k]='\0';
lencp=copyPosition2-copyPosition1;
}
else{
for(j=copyPosition2,k=;j<copyPosition1;++j)
copyStr[k++]=str1[j];
copyStr[k]='\0';
lencp=copyPosition1-copyPosition2;
}
}
else{
memset(copyStr,'\0',sizeof(copyStr));
lencp=;
}
}
}
else if(cmd[i]=='V'){
if(lencp>){
if(mode==){
if(len1+lencp<=M){
for(j=k=;j<pos;++j)str2[k++]=str1[j];
for(j=;j<lencp;++j)str2[k++]=copyStr[j];
for(j=pos;j<len1;++j)str2[k++]=str1[j];
str2[k]='\0';
strcpy(str1,str2);
len1=len1+lencp;
pos=pos+lencp;
}
}
else{
if(pos+lencp<=M){
for(j=k=;j<pos;++j)str2[k++]=str1[j];
for(j=;j<lencp;++j)str2[k++]=copyStr[j];
for(j=pos+lencp;j<len1;++j)str2[k++]=str1[j];
str2[k]='\0';
strcpy(str1,str2);
if(pos+lencp>len1)len1=pos+lencp;
pos=pos+lencp;
}
}
}
}
}
} int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d",&M);
//M=100;
scanf("%s",cmd);
f();
if(str1[])printf("%s\n",str1);
else printf("NOTHING\n");
}
return ;
}

hiho Mission Impossible 6(模拟 未提交验证。。)的更多相关文章

  1. MVC身份验证.MVC过滤器.MVC6关键字Task,Async.前端模拟表单验证,提交.自定义匿名集合.Edge导出到Excel.BootstrapTree树状菜单的全选和反选.bootstrap可搜索可多选可全选下拉框

    1.MVC身份验证. 有两种方式.一个是传统的所有控制器继承自定义Control,然后再里面用MVC的过滤器拦截.所以每次网站的后台被访问时.就会先走入拦截器.进行前端和后端的验证 一个是利用(MVC ...

  2. SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因

    原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...

  3. ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛 B Mission Impossible 6

    #1228 : Mission Impossible 6 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 You must have seen the very famou ...

  4. AngularJS系列:表单全解(表单验证,radio必选,三级联动,check绑定,form提交验证)

    一.查看$scope -->寻找Form控制变量的位置 Form控制变量 格式:form的name属性.input的name属性.$... formName.inputField.$pristi ...

  5. .NET分布式事务未提交造成6107错误或系统被挂起的问题分析定位

    问题描述: 系统中多个功能不定期出现“Unable to get error message (6107) (0).”错误,即分布式事务超时,但报出错误的部分功能根本没有使用分布式事务. 原因分析: ...

  6. Mission Impossible 6

    题目:Mission Impossible 6 题目链接:http://hihocoder.com/problemset/problem/1228 题目大意: 大概就是让我们写一个代码模拟文本编辑器的 ...

  7. SQL Server中的事务与其隔离级别之脏读, 未提交读,不可重复读和幻读

    原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...

  8. 2015 ACM-ICPC国际大学生程序设计竞赛北京赛区网络赛 1002 Mission Impossible 6

    题目链接: #1228 : Mission Impossible 6 解题思路: 认真读题,细心模拟,注意细节,就没有什么咯!写这个题解就是想记录一下rope的用法,以后忘记方便复习. rope(块状 ...

  9. SVN本地代码未提交而被覆盖

    本地代码未提交而不小心被覆盖了,肿么办... 到回收站找到你的文件 xxx.mine,代码就可以找回来了.如果回收站没有了,那就没办法了. ---- 失而复得的感觉真好!

随机推荐

  1. 标准C程序设计七---30

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  2. R语言入门视频笔记--9--随机与数据描述分析

    古典概型的样本总量是一定的,且每种可能的可能性是相同的, 1.中位数:median(x) 2.百分位数:quantile(x)或者quantile(x,probe=seq(0,1,0.2)) #后面这 ...

  3. HDU 5667 Sequence【矩阵快速幂+费马小定理】

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5667 题意: Lcomyn 是个很厉害的选手,除了喜欢写17kb+的代码题,偶尔还会写数学题.他找到 ...

  4. T1077 多源最短路 codevs

    http://codevs.cn/problem/1077/ 时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 已知n个点(n&l ...

  5. ueditor整合之后前段不显示高亮

    自己整合ueditor插件后,发现在前段显示的时候并没有高亮处理 在网上看了一些方法后,自己尝试了下. 1.在页面上引入相关的js和css文件 主要是以下两个文件 <script src=&qu ...

  6. __new__ 和 __init__

    new 在新式类中负责真正的实例化对象,而__init__只是负责初始化 __new__创建的对象.一般来说 new 创建一个内存对象,也就是实例化的对象的实体,交给__init__进行进一步加工.官 ...

  7. 【面试 JDK】【第一篇】Object类面试详解

    1.Object类有哪些方法 1>clone()方法 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异 ...

  8. 【Windows7】win7启动 报错 AutoIt错误,不能打开脚本文件

    解决方法: 1.开始-->运行-->regedit 2.按照下图 3.

  9. win7安装ANT

    点击进入ant官网,找到下载选项.   选择下载安装文件.其余的源文件和手册的下载步骤完全相同.   可以下载官网上对应系统的最新版本.也可以在old ant 版本中选择自己需要的版本.笔者需要ant ...

  10. 如何通过SQL注入获取服务器本地文件

    写在前面的话 SQL注入可以称得上是最臭名昭著的安全漏洞了,而SQL注入漏洞也已经给整个网络世界造成了巨大的破坏.针对SQL漏洞,研究人员也已经开发出了多种不同的利用技术来实施攻击,包括非法访问存储在 ...