zoukankan      html  css  js  c++  java
  • BZOJ 1507 [NOI2003]Editor

    Description

    Input

    输 入文件editor.in的第一行是指令条数t,以下是需要执行的t个操作。其中: 为了使输入文件便于阅读,Insert操作的字符串中可能会插入一些回车符,请忽略掉它们(如果难以理解这句话,可以参考样例)。 除了回车符之外,输入文件的所有字符的ASCII码都在闭区间[32, 126]内。且行尾没有空格。 这里我们有如下假定:  MOVE操作不超过50000个,INSERT和DELETE操作的总个数不超过4000,PREV和NEXT操作的总个数不超过200000。  所有INSERT插入的字符数之和不超过2M(1M=1024*1024),正确的输出文件长度不超过3M字节。  DELETE操作和GET操作执行时光标后必然有足够的字符。MOVE、PREV、NEXT操作必然不会试图把光标移动到非法位置。  输入文件没有错误。 对C++选手的提示:经测试,最大的测试数据使用fstream进行输入有可能会比使用stdio慢约1秒。

    Output

    输出文件editor.out的每行依次对应输入文件中每条GET指令的输出。

    Sample Input

    15
    Insert 26
    abcdefghijklmnop
    qrstuv wxy
    Move 15
    Delete 11
    Move 5
    Insert 1
    ^
    Next
    Insert 1
    _
    Next
    Next
    Insert 4
    ./.
    Get 4
    Prev
    Insert 1
    ^
    Move 0
    Get 22

    Sample Output

    ./.
    abcde^_^f./.ghijklmno
     
    认识了一个特别牛的库,#include<ext/rope>,里面有好多东西。。。慢慢研究
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<ext/rope>
     4 using namespace std;
     5 using namespace __gnu_cxx;//没太懂
     6 crope list;
     7 char ch[3000005];
     8 int t,now;
     9 int main(){
    10     scanf("%d",&t);
    11     while (t--){
    12         char s[10];int x;
    13         scanf("%s",s);
    14         switch(s[0]){
    15             case 'M':scanf("%d",&now);break;
    16             case 'P':now--;break;
    17             case 'N':now++;break;
    18             case 'I':
    19                 scanf("%d",&x);
    20                 for (int i=0;i<x;i++){
    21                     ch[i]=getchar();
    22                     while(ch[i]=='
    ')ch[i]=getchar();
    23                     ch[x]=0;
    24                 } 
    25                 list.insert(now,ch);
    26                 break;
    27             case 'D':scanf("%d",&x);list.erase(now,x);break;
    28             case 'G':scanf("%d",&x);list.copy(now,x,ch);ch[x]=0;puts(ch); 
    29         }
    30     }
    31 }
  • 相关阅读:
    Anaconda的安装和更新
    Python数据分析学习目录
    国标28181sip开源库介绍(陆续补充完备)
    开源sip server & sip client 和开发库 一览
    几种开源SIP协议栈对比
    用TCP穿透NAT(TCP打洞)的实现
    使用TCP协议的NAT穿透技术
    TCP点对点穿透探索--失败
    snmp++开发实例一
    socket跟TCP/IP 的关系,单台服务器上的并发TCP连接数可以有多少
  • 原文地址:https://www.cnblogs.com/wuminyan/p/5137915.html
Copyright © 2011-2022 走看看