专栏文章
题解:P14018 [ICPC 2024 Nanjing R] 左移 3
P14018题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miny2aph
- 此快照首次捕获于
- 2025/12/02 10:13 3 个月前
- 此快照最后确认于
- 2025/12/02 10:13 3 个月前
P14018 题解:
主要思路:
先循环遍历一边字符串,如果从当前下标向后截取 位的子串为 nanjing,就让答案加一。接下来处理边上的串,直接打表就行了,不难。
代码实现:
- 定义变量 存储最终答案。
- 循环扫一遍字符串,遍历到 nanjing 就让 。
- 打表处理边上的串。
- 输出答案。
AC Code:
CPP#include <bits/stdc++.h>
#define int long long
using namespace std;
int T;
int n,k;
int32_t main(){
cin.tie(nullptr)->ios::sync_with_stdio(false);
cin>>T;
while(T--){
cin>>n>>k;
string s;
cin>>s;
if(s.size()<7){
cout<<0<<endl;
continue;
}
int sum=0;
for(int i=0;i<s.size()-6;i++){
if(s.substr(i,7)=="nanjing"){
sum++;
}
}//循环扫一遍字符串
//打表处理边上的串(注意判断左移次数是否够)
if(s[0]=='g'&&s.substr(s.size()-6,6)=="nanjin"&&k>=1){
sum++;
}
if(s.substr(0,2)=="ng"&&s.substr(s.size()-5,5)=="nanji"&&k>=2){
sum++;
}
if(s.substr(0,3)=="ing"&&s.substr(s.size()-4,4)=="nanj"&&k>=3){
sum++;
}
if(s.substr(0,4)=="jing"&&s.substr(s.size()-3,3)=="nan"&&k>=4){
sum++;
}
if(s.substr(0,5)=="njing"&&s.substr(s.size()-2,2)=="na"&&k>=5){
sum++;
}
if(s.substr(0,6)=="anjing"&&s[s.size()-1]=='n'&&k>=6){
sum++;
}
cout<<sum<<endl;//输出答案
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...