前缀和

我们定义一个sum[i]表示1到i一共可以加多少愉悦值,那么这个题目就变成了一个前缀和的问题了,但是要注意的是,题目说吃第一个雪糕的时候可以加1,那么我们只需要在最后的时候加一个1就行。
因为数据很大,所以建议scanf输入,并且暴力的话只能过三分之二的样例
AC代码

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <set>
#include <map>
#include <math.h>
#include <vector>
#include <queue>
#include <string.h>
typedef long long ll;
using namespace std;
#define pi acos(-1.0)
const int maxn = 5e6 + 10;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;
int a[maxn], sum[maxn];
int main()
{
    int n, k, q;
    scanf("%d%d%d", &n, &k, &q);
    for (int i = 1; i <= n; ++i)
        scanf("%d", &a[i]);
    sum[1] = 1;
    for (int i = 2; i <= n; ++i)
        if (a[i - 1] != a[i])
            sum[i] = sum[i - 1] + 1;
        else
            sum[i] = sum[i - 1];
    for (int i = 1; i <= q; ++i)
    {
        int l, r;
        scanf("%d%d", &l, &r);
        ll cnt = sum[r] - sum[l] + 1;
        if (cnt >= k)
            puts("Yes");
        else
            puts("No");
    }
}