题目描述:
解题思路:
采用双指针的快慢指针。与蓝桥OJ1372类似。
图解
题解:
#include <bits/stdc++.h>
using namespace std;const int N = 1e5 + 9;
int a[N];int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n, m, k;cin >> n >> m >> k;for(int i = 1; i <= n; i++)cin >> a[i];int ans = 0;for(int i = 1, cnt = 0, j = 0; i <= n; i++)//初始化写在for里面和写在外面一样{while(i > j || (j + 1 <= n && cnt < k))cnt += (a[++j] >= m);if(cnt >= k)ans += n - j + 1;//ans是答案,计算每种i开头的可能子串数cnt -= (a[i] >= m);//用逻辑运算式可以减少使用if}cout << ans; return 0;
}