brz的雪糕题解

brz的雪糕

https://ac.nowcoder.com/acm/contest/8282/B

题目描述

思路:用dp[i]表示吃掉第1块雪糕到第i块雪糕获得的愉悦值
再dp[r]-dp[l-1]与k比较就可以了
值得注意的是吃第1块雪糕愉悦值为1,如果dp[l]=dp[l-1],相当于吃第一块雪糕愉悦值为0
这种情况ans要+1
AC代码
#include <bits/stdc++.h>
using namespace std;
int dp[2000008];//dp[i]表示吃掉第1块雪糕到第i块雪糕获得的愉悦值
int main()
{
    int n,m,k,x,pre;
    scanf("%d%d%d",&n,&k,&m);
    dp[0]=0;
    for(int i=1; i<=n; ++i)
    {
        scanf("%d",&x);
        if(i==1)
        {
            dp[i]=1;
            continue;
        }
        if(pre!=x)//判断与前一个数是否相等
            dp[i]=dp[i-1]+1;
        else
            dp[i]=dp[i-1];
        pre=x;
    }
    while(m--)
    {
        int a,b,an;
        scanf("%d%d",&a,&b);
        an=dp[b]-dp[a-1];
        if(dp[a]==dp[a-1])//吃第1块雪糕愉悦值为1,如果dp[a]=dp[a-1]
            an++;         //相当于吃第一块雪糕愉悦值为0
        if(an>=k)
            puts("Yes");
        else
            puts("No");
    }
}
//dp[i]表示吃掉第1块雪糕到第i块雪糕获得的愉悦值


全部评论

相关推荐

不愿透露姓名的神秘牛友
07-23 14:13
这是聊岔撇了吗,相同的话问了两遍
吴offer选手:上下文切换这一块
点赞 评论 收藏
分享
陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-23 14:18
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务