2014杭电多校联合第三场The Great Pan模拟题

来源:互联网 发布:公众号排版软件 编辑:程序博客网 时间:2024/06/01 19:18

链接:http://acm.hdu.edu.cn/showproblem.php?pid=4891

题意:给你一个题面,按题目的说法能读出几种意思。

思路:好吧,就是一个模拟题吧。解题报告说,题目怎么说你就怎么写。就是这样吧。

有一个坑就是记录竖线数量的时候要用__int64,因为这个WA好久。其它的,把一些情况都考虑好久差不多了。


#include<cstdio>#include<cstring>#include<iostream>using namespace std;int n;char s[1058576];int main(){    int l_left,l_right;    int s_left,s_right;    int exit,posi,posj;    __int64 way,line_num,space_num;    while(scanf("%d",&n)!=EOF)    {        getchar();        way=line_num=1;        l_left=l_right=0;        s_left=s_right=0;        space_num=1;        exit=0;        posi=-1;        posj=-1;        for(int i=1;i<=n;i++)        {            gets(s);            if(exit)continue;            int len=strlen(s);            for(int j=0;j<len;j++)            {                if(s[j]=='{')l_left=1;                if(s[j]=='}')l_right=1;                if(s[j]=='|')line_num++;                if(l_left&&l_right)                {                    way*=line_num;                    if(way>100000)                    {                        exit=1;                        break;                    }                    l_left=l_right=0;                    line_num=1;                }                if(s[j]=='$'&&s_left==0)                {                    s_left=1;                    posi=i;                    posj=j;                }                if(s[j]=='$'&&s_left==1&&(i!=posi||j!=posj))                {                    s_right=1;                    way*=space_num;                    if(way>100000)                    {                        exit=1;                        break;                    }                    space_num=1;                }                if(s_left==1&&s[j]==' ')                {                    space_num++;                    if(s[j+1]!=' '&&j+1!=len)                    {                        way*=space_num;                        if(way>100000)                        {                            exit=1;                            break;                        }                        space_num=1;                    }                }                else if(s_left==1&&s[j]!=' '&&s[j]!='$')                {                    way*=space_num;                    if(way>100000)                    {                        exit=1;                        break;                    }                    space_num=1;                }                if(s_left&&s_right)                {                    s_left=s_right=0;                    space_num=1;                    posi=-1;                    posj=-1;                }            }        }        if(!exit)            printf("%I64d\n",way);        else            printf("doge\n");    }    return 0;}


0 0
原创粉丝点击