NC14350. 苦逼的单身狗
描述
输入描述
本题有T组数据。
对于每组数据只有一行文本。
1≤T≤20
1≤文本长度≤100000
输出描述
输出结果,并换行。
示例1
输入:
3 ILOVEACM LOVELOVE ALBECVOD
输出:
8 15 4
说明:
对于第一组数据共有如下8种截取方案C++14(g++5.4) 解法, 执行用时: 28ms, 内存消耗: 1576K, 提交时间: 2020-08-21 14:08:03
#include<bits/stdc++.h> using namespace std; string ss; int main() { int T; scanf("%d",&T); while(T--) { cin>>ss; int n=ss.size(); int l=-1,o=-1,v=-1,e=-1,minn; long long ans=0; for(int i=0;i<n;i++) { if(ss[i]=='L')l=i; else if(ss[i]=='O')o=i; else if(ss[i]=='V')v=i; else if(ss[i]=='E')e=i;//存最后面的位置 minn=min(min(l,o),min(v,e));//找四个字母中最前面的那个,那个就是对答案的贡献 if(minn!=-1) ans+=minn+1; } printf("%lld\n",ans); } return 0; }
pypy3 解法, 执行用时: 173ms, 内存消耗: 52272K, 提交时间: 2022-08-22 13:53:17
n=int(input()) for z in range(n): s = input() n = len(s) r = 0 L=O=V=E=-1 for i in range(n): if s[i]=='L': L=i elif s[i]=='O': O=i elif s[i]=='V': V=i elif s[i]=='E': E=i tmp=min(L,O,V,E) if tmp!=-1: r+=tmp+1 print(r)
C++11(clang++ 3.9) 解法, 执行用时: 56ms, 内存消耗: 1540K, 提交时间: 2019-12-26 16:57:11
#include<bits/stdc++.h> using namespace std; int main(){ int a; cin>>a; string b; while(a--){ int l=-1,o=-1,v=-1,e=-1; int c,sum=0; cin>>b; for(int i=0;i<b.length();i++){ if(b[i]=='L') l=i; if(b[i]=='O') o=i; if(b[i]=='V') v=i; if(b[i]=='E') e=i; c=min(min(l,o),min(v,e)); if(c!=-1) sum+=c+1; } printf("%d\n",sum); } return 0; }
Python3 解法, 执行用时: 868ms, 内存消耗: 5016K, 提交时间: 2023-04-19 20:31:41
n=int(input()) for i in range(n): s=input().lower() c=0 l,o,v,e=-1,-1,-1,-1 for i in range(len(s)): if s[i]=="l": l=i elif s[i]=="o": o=i elif s[i]=="v": v=i elif s[i]=="e": e=i if min(l,o,v,e)!=-1: c=c+1+min(l,o,v,e) #print(s,s[i],[l,o,v,e],c) print(c)