官方题解 | Word
2025-09-06 19:00:55
发布于:云南
17阅读
0回复
0点赞
B. Word
Subtask 100 pt
根据题意模拟即可。本题难点在于字符串函数的使用,以下是本题需用到的函数:
size()
:得到字符串的长度erase()
:删除字符串的指定区域insert()
:在字符串指定区域插入内容empty()
:判断字符串是否为空substr()
:截取字符串的指定区域
AC Code
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
int n; cin >> n;
string wd = "",jtb = "";
int gb = 0,xz_l = -1,xz_r = -1;
for(int _ = 1; _ <= n;_++){
string op; cin >> op;
if(op == "I"){
string s; cin >> s;
if(xz_l != -1 && xz_l <= xz_r && xz_r < (int)wd.size()){
wd.erase(xz_l,xz_r - xz_l + 1);
wd.insert(xz_l,s);
gb = xz_l + s.size();
}else{
wd.insert(gb,s);
gb += s.size();
}
xz_l = xz_r = -1;
}else if(op == "A"){
if(wd.empty()) xz_l = xz_r = -1;
else{
xz_l = 0;
xz_r = (int)wd.size() - 1;
}
gb = wd.size();
}else if(op == "C"){
if(xz_l != -1 && xz_l <= xz_r && xz_r < (int)wd.size()) jtb = wd.substr(xz_l,xz_r - xz_l + 1);
xz_l = xz_r = -1;
}else if(op == "V"){
if(xz_l != -1 && xz_l <= xz_r && xz_r < (int)wd.size()){
wd.erase(xz_l,xz_r - xz_l + 1);
wd.insert(xz_l,jtb);
gb = xz_l + jtb.size();
}else{
wd.insert(gb,jtb);
gb += jtb.size();
}
xz_l = xz_r = -1;
}else if(op == "P"){
int i; cin >> i;
gb = min(i,(int)wd.size());
xz_l = xz_r = -1;
}else if(op == "TP"){
int i; cin >> i;
if(wd.empty()){
xz_l = xz_r = -1;
gb = 0;
}else{
i = max(1LL,min(i,(int)wd.size()));
xz_l = xz_r = i - 1;
gb = i;
}
}
}
cout << wd;
return 0;
}
时间复杂度:
这里空空如也
有帮助,赞一个