hiho Mission Impossible 6(模拟 未提交验证。。)
题意:模拟文本操作
思路:模拟
#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(模拟 未提交验证。。)的更多相关文章
- MVC身份验证.MVC过滤器.MVC6关键字Task,Async.前端模拟表单验证,提交.自定义匿名集合.Edge导出到Excel.BootstrapTree树状菜单的全选和反选.bootstrap可搜索可多选可全选下拉框
1.MVC身份验证. 有两种方式.一个是传统的所有控制器继承自定义Control,然后再里面用MVC的过滤器拦截.所以每次网站的后台被访问时.就会先走入拦截器.进行前端和后端的验证 一个是利用(MVC ...
- SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛 B Mission Impossible 6
#1228 : Mission Impossible 6 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 You must have seen the very famou ...
- AngularJS系列:表单全解(表单验证,radio必选,三级联动,check绑定,form提交验证)
一.查看$scope -->寻找Form控制变量的位置 Form控制变量 格式:form的name属性.input的name属性.$... formName.inputField.$pristi ...
- .NET分布式事务未提交造成6107错误或系统被挂起的问题分析定位
问题描述: 系统中多个功能不定期出现“Unable to get error message (6107) (0).”错误,即分布式事务超时,但报出错误的部分功能根本没有使用分布式事务. 原因分析: ...
- Mission Impossible 6
题目:Mission Impossible 6 题目链接:http://hihocoder.com/problemset/problem/1228 题目大意: 大概就是让我们写一个代码模拟文本编辑器的 ...
- SQL Server中的事务与其隔离级别之脏读, 未提交读,不可重复读和幻读
原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...
- 2015 ACM-ICPC国际大学生程序设计竞赛北京赛区网络赛 1002 Mission Impossible 6
题目链接: #1228 : Mission Impossible 6 解题思路: 认真读题,细心模拟,注意细节,就没有什么咯!写这个题解就是想记录一下rope的用法,以后忘记方便复习. rope(块状 ...
- SVN本地代码未提交而被覆盖
本地代码未提交而不小心被覆盖了,肿么办... 到回收站找到你的文件 xxx.mine,代码就可以找回来了.如果回收站没有了,那就没办法了. ---- 失而复得的感觉真好!
随机推荐
- Mac快速查看隐藏文件
使用终端 显示隐藏文件的最简单方法是使用终端.只要打开终端(位于应用程序--实用工具),将以下代码复制进去然后回车 defaults write com.apple.finder AppleShowA ...
- golang-random随机数
在Golang中,有两个包提供了rand,分别为 "math/rand" 和 "crypto/rand", 对应两种应用场景. 一."math/ra ...
- Can't connect to X11 window server using 'localhost:0.0' 的解决
Can't connect to X11 window server using 'localhost:0.0' 的解决 http://lufei-99999.blog.163.com/blog/st ...
- AC日记——凌乱的yyy 洛谷 P1803
题目背景 快noip了,yyy很紧张! 题目描述 现在各大oj上有n个比赛,每个比赛的开始.结束的时间点是知道的. yyy认为,参加越多的比赛,noip就能考的越好(假的) 所以,他想知道他最多能参加 ...
- 从Activity的启动流程理解Binder
简述 关于Activity启动流程和Binder的文章很多,大多数是分开来讲的,本文将二者结合起来,着重分析启动流程中跨进程方面的细节,其实,启动流程看似调用繁多,主要是复杂在Activity栈管理等 ...
- ZOJ - 4019 Schrödinger's Knapsack (背包,贪心,动态规划)
[传送门]http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5747 [题目大意]:薛定谔的背包.薛定谔的猫是只有观测了才知道猫的死 ...
- spark学习(六)Java版RDD基本的基本操作
1.map算子 private static void map() { //创建SparkConf SparkConf conf = new SparkConf() .setAppName(" ...
- 简化LINUX的命令输入 简化linux命令 快捷键 短路径
在LINUX中,有很多常用的命令,常用的命令我们可以熟练的记忆,但是对于不经常使用的命令恐怕是需要翻阅手册了,但是我们可以简化这些命令的输入来达到简便记忆的效果. 这里以BSH为例: 编辑/etc/b ...
- 解决树莓派8G的SD卡只能识别3.3G,SD卡扩容
8GB microSD在Windows下使用Win32 Disk Imager下载映像后,在RPi中只能识别出3.3GB.而本身还有很多容量没有释放出来. 使用sudo raspi-config工具可 ...
- 使用SmartQQ实现的智能回复(Web QQ协议)
采用SmartQQ SDK进行开发,官网:https://github.com/ScienJus/smartqq 此项目只是集成使用的方法,在com.jsoft.robot.SmartQQUse.Re ...