苦逼的单身狗 (尺取法)

题目传送门

苦逼的单身狗

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

双11又到了,小Z依然只是一只单身狗,对此他是如此的苦恼又无可奈何。

为了在这一天脱单小Z决定向女神表白,但性格腼腆的小Z决定隐晦一点,截取一段包含‘L‘、‘O‘、‘V‘、‘E‘的英文。(顺序不限)

小Z想起之前小D送给他一本英文书,决定在这里面截取一段话,小Z发现有好多种方案来截取这段话。

你能知道小Z能有多少种方案截取这段话么?

为了简化问题,英文文本讲不会出现空格、换行、标点符号及只有大写的情况。

输入描述:

本题有T组数据。对于每组数据只有一行文本。1≤T≤201≤文本长度≤100000

输出描述:

输出结果,并换行。输入:

3
ILOVEACM
LOVELOVE
ALBECVOD

输出:

8
15
4

题意:找出包含LOVE的子串数目

题解:这题可以用尺取法做,而且答案就是每次的len-R

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define MAX 100005
string s;
int T;
ll ans;
map<char,int>cnt;
int main()
{
    //cout<<ok()<<endl;
    cin>>T;
    while(T--)
    {
        s="";
        cnt.clear();
        cin>>s;
        int len=s.size();
        int st=0,ed=0;
        ans=0;
       int num=0;
       while(1)
        {
            while(ed<len&&num<4){
                if(s[ed]==‘L‘||s[ed]==‘E‘||s[ed]==‘V‘||s[ed]==‘O‘) {
                    cnt[s[ed]]++;
                    if(cnt[s[ed]]==1) num++;
                }
                ed++;
            }
            if(num<4) break;
            //printf("ed %d \n",ed);
                                ans+=len-ed+1;
             if(s[st]==‘L‘||s[st]==‘E‘||s[st]==‘V‘||s[st]==‘O‘) {
                cnt[s[st]]--;
                if(cnt[s[st]]==0) num--;
             }
             st++;
            // printf("st %d \n",st);
        }
        cout<<ans<<endl;
    }
}


原文地址:https://www.cnblogs.com/zhgyki/p/9568788.html

时间: 2024-11-01 15:27:03

苦逼的单身狗 (尺取法)的相关文章

BestCoder Round #86 二,三题题解(尺取法)

第一题太水,跳过了. NanoApe Loves Sequence题目描述:退役狗 NanoApe 滚回去学文化课啦! 在数学课上,NanoApe 心痒痒又玩起了数列.他在纸上随便写了一个长度为 nnn 的数列,他又根据心情随便删了一个数,这样他得到了一个新的数列,然后他计算出了所有相邻两数的差的绝对值的最大值. 他当然知道这个最大值会随着他删了的数改变而改变,所以他想知道假如全部数被删除的概率是相等的话,差的绝对值的最大值的期望是多少. 输入描述 第一行为一个正整数 T,表示数据组数. 每组数

5806 NanoApe Loves Sequence Ⅱ(尺取法)

传送门 NanoApe Loves Sequence Ⅱ Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/131072 K (Java/Others)Total Submission(s): 1585    Accepted Submission(s): 688 Description NanoApe, the Retired Dog, has returned back to prepare for for the

光棍节脱单,单身狗该你上了

11.11---  一年一度的光棍节到了,又到了装逼的最佳时间. 光棍节是单身狗的硬伤,同时也是已婚男淫最害怕过的节日. 女人这个动物,据说她们非常善良,喜欢养小动物,什么捷豹呀,悍马,路虎,当然还有天猫. 这TM前提是你得有一个女朋友.没女朋友你说个毛啊? 对于屌丝没有女朋友,我深深地表示↓↓↓↓↓ 双十一,弱弱的问一句,你想脱单吗? 来兄弟连学习云计算架构湿吧! 架构湿,湿湿de,单身狗值得拥有. 来兄弟连学习你就可以实现骚动的梦想. 因为,他们都拿到了 高薪.高薪.高薪 对于从兄弟连毕业拿

luogu 1712 区间(线段树+尺取法)

题意:给出n个区间,求选择一些区间,使得一个点被覆盖的次数超过m次,最小的花费.花费指的是选择的区间中最大长度减去最小长度. 坐标值这么大,n比较小,显然需要离散化,需要一个技巧,把区间转化为半开半闭区间,然后线段树的每一个节点表示一个半开半闭区间. 接着我们注意到需要求最小的花费,且这个花费只与选择的区间集合中的最大长度和最小长度有关. 这意味着如果最大长度和最小长度一定,我们显然是需要把中间长度的区间尽量的选择进去使答案不会变的更劣. 不妨把区间按长度排序,枚举每个最小长度区间,然后最大区间

poj 3320 Jessica&#39;s Reading Problem(尺取法+map/hash)

题目:http://poj.org/problem?id=3320 题意:给定N个元素的数组,找出最短的一段区间使得区间里面的元素种类等于整个数组的元素种类. 分析:暴力枚举区间的起点x,然后找到最小的y,使得区间[x,y]满足条件,x向有移位后变成x',现在的y'肯定不至于在y的左边.存状态的话map和hash都可以. map代码: #include <iostream> #include <set> #include <map> #include <cstdi

hihocoder-1483区间价值 (二分+尺取法)

题目链接: 区间价值 给定n个数A1...An,小Ho想了解AL..AR中有多少对元素值相同.小Ho把这个数目定义为区间[L,R]的价值,用v[L,R]表示. 例如1 1 1 2 2这五个数所组成的区间的价值为4. 现在小Ho想知道在所有的的v[L,R](1 <= L <= R <= n)中,第k小的值是多少. Input 第一行一个数T(T<=10),表示数据组数. 对于每一组数据: 第一行两个数n,k(1<=n<=200,000,1<=k<=n*(n+1

【转】毛虫算法&mdash;&mdash;尺取法

转自http://www.myexception.cn/program/1839999.html 妹子满分~~~~ 毛毛虫算法--尺取法 有这么一类问题,需要在给的一组数据中找到不大于某一个上限的"最优连续子序列" 于是就有了这样一种方法,找这个子序列的过程很像毛毛虫爬行方式,我管它叫毛毛虫算法,比较流行的叫法是"尺取法". 喏,就像图里的妹纸一样~ 还是举个栗子: Poj3061 给长度为n的数组和一个整数m,求总和不小于m的连续子序列的最小长度 输入 n = 1

PAT乙级 1065. 单身狗(25) by Python

1065. 单身狗(25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue "单身狗"是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数N(<=50000),是已知夫妻/伴侣的对数:随后N行,每行给出一对夫妻/伴侣--为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔:之后给出一

51nod1127(尺取法)

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1127 题意:中文题诶- 思路:尺取法 维护一个队列,若当前队首的元素在后面出现了,那么我们就将其删除,若当前队列里含有26个字母,我们就记录其size. 取所有size里面的最小值就是我们要的答案... 代码: 1 #include <iostream> 2 #include <stdio.h> 3 #include <string>