1. 程式人生 > >哈爾濱理工大學第七屆程式設計競賽初賽(高年級組)F.苦逼單身狗(滑動視窗 or DP or 二分)

哈爾濱理工大學第七屆程式設計競賽初賽(高年級組)F.苦逼單身狗(滑動視窗 or DP or 二分)

思路:滑動視窗 or DP or 二分。

滑動視窗:

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int num[4];//L,O,V,E的個數
const string LOVE = "LOVE";
char str[MAXN];
int main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        memset(num, 0, sizeof(num));
        scanf("%s", str);
        int len = strlen(str), now = 0, r = 0;
        long long ans = 0;
        for (int i = 0; i < len; i++)
        {
            //查詢以i為起點的第一個符合要求的區間
            while (now < 4 && r < len)
            {
                for (int j = 0; j < 4; j++)
                {
                    if (str[r] == LOVE[j])
                    {
                        if (!num[j]) now++;
                        num[j]++;
                    }
                }
                r++;
            }
            if (now < 4) break;
            ans += (len - r + 1);
            //更新num和now
            for (int j = 0; j < 4; j++)
            {
                if (str[i] == LOVE[j]) num[j]--;
                if (!num[j]) now--;
            }
        }
        printf("%lld\n", ans);
    }
}
/*
3
ILOVEACM
LOVELOVE
ALBECVOD
*/




來源:牛客網

題目描述

雙11又到了,小Z依然只是一隻單身狗,對此他是如此的苦惱又無可奈何。

為了在這一天脫單小Z決定向女神表白,但性格靦腆的小Z決定隱晦一點,擷取一段包含'L'、'O'、'V'、'E'的英文。(順序不限)

小Z想起之前小D送給他一本英文書,決定在這裡面擷取一段話,小Z發現有好多種方案來擷取這段話。

你能知道小Z能有多少種方案擷取這段話麼?

為了簡化問題,英文文字講不會出現空格、換行、標點符號及只有大寫的情況。

輸入描述:

本題有T組資料。
對於每組資料只有一行文字。
1≤T≤20
1≤文字長度≤100000

輸出描述:

輸出結果,並換行。