每日一题 糖糖别胡说,我真的不是签到题目

糖糖别胡说,我真的不是签到题目

https://ac.nowcoder.com/acm/problem/14583

后缀数组写起来简单,理解也比较简单。如果在原来的基础之上发功,就算开始发功的人收益但当后续的发功结束后该来的终究会来,之前小于他的糖糖也会被灭掉,所以从后往前是可以的,还容易维护一些

#include <bits/stdc++.h>
using namespace std;
#define ll long long
struct node {
  ll a,b;
}m[50007];
ll c[1000007]={0};///后缀小数组
int main()
{
  ll t;
  scanf("%lld",&t);
  while (t--)
  {
    ll n,w;
    memset(c,0,sizeof(c));///初始化
    scanf("%lld%lld",&n,&w);
    for (register int i=1;i<=n;++i)
    {
      scanf("%lld%lld",&m[i].a,&m[i].b);
    }
    for (register int i=1;i<=w;++i)
    {
      int x;
      scanf("%d",&x);
      ++c[x];
    }
    ll ans=0;
    ll maxn_1=-1;
    ll maxn_0=-1;
    for (register int i=n;i>=1;--i)
    {
      c[i]+=c[i+1];///累计发功量
      m[i].b+=c[i];///发功
      if (m[i].a){
         if(maxn_1<m[i].b)///更新该组最大值
          {
             maxn_1=m[i].b;
          }
        if (m[i].b<maxn_0)///比较后面有无其他组最大值大于他
          ++ans;
      }
      else
      {
        if(maxn_0<m[i].b)
          maxn_0=m[i].b;
        if (m[i].b<maxn_1)
          ++ans;
      }
    }
    printf("%lld\n",n-ans);///所有减去死亡的 正难则反
  }
  return 0;
}
全部评论

相关推荐

家人们,我现在真的好纠结。我是26届的,目前还没有实习过。我现在的情况是,想参加秋招,但是感觉自己的简历特别空,没有实习经历会不会秋招直接凉凉啊?可我又听说现在很多公司对26届实习生也不太感冒,说什么不确定性大。而且我最近在准备考公,时间上也有点冲突。要是把时间花在实习上,备考时间就少了。但要是不实习,又怕以后就业有问题😫有没有懂行的友友帮我分析分析:26届现在不实习,秋招找工作真的会很难吗?考公和实习该怎么平衡啊?如果现在不实习,考完公再去找实习还来得及吗?真的太焦虑了,希望大家能给我点建议🙏
小破站_程序员YT:我可能和大家的观点不一样。人的精力是有限的,不能既要还要。你又想实习又想考公最后又要秋招上岸,我觉得哪有那么多的选择。你如果想考上岸,那就全力以赴。如果想秋招上岸,就继续投实习,投没了,就继续准备秋招,秋招不行继续春招。别到最后,考公没上岸,觉得是花了时间浪费在找实习上了, 秋招没上岸,觉得是浪费时间准备考公去了。我是认为很难说可以去平衡 不喜勿喷,可以叫我删除
点赞 评论 收藏
分享
06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

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