ZOJ 4034 模拟

题目链接:https://vjudge.net/problem/ZOJ-4034

题目思路:简单模拟,主要数据有

1 100

W

2 100

W

C 100

3 100

C 100

C 1

C 2

3 100

C 100

W

D 100

4 100

C 100

B 1

D 100

3 100

C 100

B 1

B 2

3 100

C 100

C 1

W

4 100 

C 100

C 1

W

B 1

AC代码

#include <iostream>
#include<bits/stdc++.h>
using namespace std;

long long num[1000000];
long long n,m;

int main()
{
    int t;
    scanf("%d",&t);
    map<char,int>maps;
    maps['C']=0;
    maps['B']=1;
    maps['D']=2;
    while(t--)
    {
        long long pos=-1;
        scanf("%lld%lld",&n,&m);
        for(int i=1;i<=n;++i)
        {
            char x;
            cin>>x;
            if(x=='W')
            {
                pos=i;
                num[i]=10000000000;
            }
            else
            {
                long long y;
                scanf("%lld",&y);
                num[i]=maps[x]*m+y;
            }
        }
        long long ans=0;

        if(n==1)
            printf("%lld\n",3*m);
        else
        {
            if(pos==-1)
            {
                if(num[1]>num[2])
                    printf("1\n");
                else
                    printf("%lld\n",3*m-n+1);
            }
            else
            {
                if(pos>2)
                {
                    if(num[1]>num[2])
                        printf("1\n");
                    else
                    {
                        long long l=pos-1<1?0:num[pos-1];
                        long long r=pos+1>n?3*m+1:num[pos+1];
                        printf("%lld\n",r-l-1);
                    }
                }
                else
                {
                    long long l=pos-1<1?0:num[pos-1];
                    long long r=pos+1>n?3*m+1:num[pos+1];
                    ans=r-l-1;
                    if(pos==2&&r>l)
                        ans++;
                    printf("%lld\n",ans);
                }
            }
        }


    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_36921652/article/details/83540189