列表

详情


NC18984. 可爱即正义

描述

小可爱是个可爱的女孩子(nzdl)。
众所周知,小可爱在物竞初赛时候有两道大题没有做出来,所以,可爱的小可爱(qwq)便沉浸在了毒瘤之中——无法接受在任何地方看到"suqingnianloveskirito"这个东西。然而,这时候从SD某处送来了一封安慰信(情书),信的内容是一个26个小写拉丁字母组成的字符串s。这封信提前被wyxdrqc劫了下来(没错,就是这个劫),他打开了这封信,结果发现了满篇的"suqingnianloveskirito"所以他想篡改这封信。
由于他的能力有限,所以他只能把这个字符串的其中两个位置上的字符互换,而且只能操作一次。
他现在想问你,通过他的操作能不能使"suqingnianloveskirito"不是这个字符串的子串。

输入描述

一行一个字符串s

输出描述

如果他能通过只交换其中的两个位置上的字符使"suqingnianloveskirito"不是交换后的字符串的子串,则在第一行输出一个Yes,之后一行输出两个数d1,d2,表示你的方案是把原字符串在位置d1和位置d2上的字符互换,字符串的第一个字符的位置是1。
如果他不管交换那两个字符都不能满足条件,直接输出一行No。

示例1

输入:

suqingnianloveskiritosuqingnianloveskiritosuqingnianloveskiritothemostimportantthingneedsaidatleastthreetimes

输出:

No

示例2

输入:

suqingnianloveskiritosomuch

输出:

Yes
1 2

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 7ms, 内存消耗: 612K, 提交时间: 2018-09-13 21:48:35

#include<bits/stdc++.h>
using namespace std;
string s,a="suqingnianloveskirito";
int main()
{
	cin>>s;int len=a.length();
	int t1=s.find(a,0);
	int t2=s.find(a,len+t1);
	int t3=s.find(a,len+t2);
	if(t1==-1) cout<<"Yes"<<endl<<1<<' '<<2;
	else
	{
		if(t2==-1) cout<<"Yes"<<endl<<t1+1<<' '<<t1+2;
		else
		{
			if(t3==-1) cout<<"Yes"<<endl<<t1+1<<' '<<t2+2;
			else cout<<"No";
		}
	}
}

Python3 解法, 执行用时: 36ms, 内存消耗: 5172K, 提交时间: 2022-04-21 21:39:37

s = input()
x = s.find("suqingnianloveskirito")
s = s[:x] + "stqingnianloveskiriuo" + s[x + 21 : ]
y = s.find("suqingnianloveskirito")
if y == -1:
    print('Yes')
    print(f"{x + 2} {x + 20}")
else:
    z = (s[:y] + '0' + s[y + 21: ]).find("suqingnianloveskirito")
    if z == -1:
        print('Yes')
        print(f"{x + 2} {y + 20}")
    else:
        print('No')

C++(g++ 7.5.0) 解法, 执行用时: 7ms, 内存消耗: 556K, 提交时间: 2022-09-27 19:07:59

#include<bits/stdc++.h>
using namespace std;
string s,a="suqingnianloveskirito";
int x,y,z;
int main()
{
	cin>>s;int l=a.length();
	x=s.find(a,0);
	y=s.find(a,l+x);
	z=s.find(a,l+y);
	if(x==-1) cout<<"Yes"<<endl<<1<<' '<<2;
	else if(y==-1) cout<<"Yes"<<endl<<x+1<<' '<<x+2;
	else if(z==-1) cout<<"Yes"<<endl<<x+1<<' '<<y+2;
	else cout<<"No";
}

上一题