[Atcoder Regular Contest 063] Tutorial

Link:

ARC063 传送门

C:

将每种颜色的连续出现称为一段,寻找总段数即可

#include <bits/stdc++.h>

using namespace std;
int cnt=0,len;
char s[100005];
int main()
{
    scanf("%s",s+1);len=strlen(s+1);
    for(int i=1;i<=len;i++)
        if(s[i]!=s[i-1]) cnt++;
    printf("%d",cnt-1);
    return 0;
}
Problem C

D:

可以发现对于每一个点的最优解$res_i$为:

$max(w_j)-w_i(j>i)$

找到最小的$res_i$的个数即可

#include <bits/stdc++.h>

using namespace std;
int n,d,dat[100005],mx,res,cnt;
int main()
{
    scanf("%d%d",&n,&d);
    for(int i=1;i<=n;i++) scanf("%d",&dat[i]);
    mx=dat[n];
    for(int i=n-1;i>=1;i--)
    {
        if(mx>dat[i])
        {
            if(mx-dat[i]>res) res=mx-dat[i],cnt=1;
            else if(mx-dat[i]==res) cnt++;
        }
        mx=max(mx,dat[i]);
    }
    printf("%d",cnt);
    return 0;
}
Problem D

E:

F:

猜你喜欢

转载自www.cnblogs.com/newera/p/9291485.html
今日推荐