zoukankan      html  css  js  c++  java
  • 2014多校第三场1005 || HDU 4891 The Great Pan(模拟)

    题目链接

    题意 : 给你n行字符串,问你有多少种理解方式。有两大类的理解

    (1){A|B|C|D|...}代表着理解方式可以是A,可以是B或C或者D。

    (2)$blah blah$,在$$这两个符号中间,如果是不连续的空格的那个位置就有2种理解方式,可以理解为没有空格也可以理解为有空格。如果有连续N个空格的位置,那里就有N+1种理解方式。

    最后所有的理解方式相乘,数据保证$一定与$匹配,{一定与匹配},不会有任何嵌套,类似{$$}或者{{}}或者${}$这种情况都不会出现,也不会有{$}这种情况,所有的${}这些符号一定有匹配的。

    输出多少种理解方式。

    思路 : 模拟,但是由于我们在做的时候一直以为数据范围不会超,就一直WA,后来我直接找特殊数据找的恶心,又看了代码觉得没有错,就放弃了,对不起二师兄。。。。。直接贴YN的代码吧,不想写了,恶心

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <iostream>
     4 #include <algorithm>
     5 #include <vector>
     6 #include <queue>
     7 #include <set>
     8 #include <map>
     9 #include <string>
    10 #include <math.h>
    11 #include <stdlib.h>
    12 #define clear(A, X, SIZE) memset(A, X, sizeof(A[0]) * (SIZE))
    13 #define clearall(A, X) memset(A, X, sizeof(A))
    14 #define max( x, y )  ( ((x) > (y)) ? (x) : (y) )
    15 #define min( x, y )  ( ((x) < (y)) ? (x) : (y) )
    16 
    17 using namespace std;
    18 
    19 int main()
    20 {
    21    // freopen("data1.txt","r",stdin);
    22     int n,temp,cnt;
    23     long long ans ;
    24     char c,x;
    25     while(scanf("%d",&n)!=EOF)
    26     {
    27         x = getchar();
    28         while(x != '
    ')
    29             x = getchar() ;
    30         bool flat1 = false , flat2 = false , flat = true ;
    31         ans = 1 ;
    32         temp = 1 ;
    33         while(n--)
    34         {
    35             c = getchar();
    36             while(c != '
    ')
    37             {
    38                 if(flat)
    39                 {
    40                     if(ans > 100000 || temp > 100000)
    41                     {
    42                         ans = 1000000;
    43                         flat = false;
    44                         continue;
    45                     }
    46                     if(c == '{')
    47                     {
    48                         flat1 = true ;
    49                         cnt = 1 ;
    50                     }
    51                     else if(c == '}')
    52                     {
    53                         ans *= cnt ;
    54                         flat1 = false;
    55                     }
    56                     else if(flat1 && c == '|')
    57                     {
    58                         cnt ++ ;
    59                     }
    60                     else if(!flat2 && c == '$')
    61                     {
    62                         flat2 = true ;
    63                         temp = 1 ;
    64                         cnt = 1 ;
    65                     }
    66                     else if(flat2 && c == '$')
    67                     {
    68                         temp *= cnt;
    69                         ans *= temp;
    70                         flat2 = false;
    71                     }
    72                     else if(flat2 && c == ' ')
    73                     {
    74                         cnt ++ ;
    75                     }
    76                     else if(flat2 && c != ' ')
    77                     {
    78                         temp *= cnt ;
    79                         cnt = 1 ;
    80                     }
    81                 }
    82                 c = getchar();
    83             }
    84         }
    85         if(ans > 100000) puts("doge");
    86         else printf("%I64d
    ",ans);
    87     }
    88     return 0;
    89 }
    View Code
  • 相关阅读:
    JSP基础学习(二)
    JSP基础学习(一)
    Android 使用开源xUtils来实现多线程下载(非原创)
    Android 多线程断点下载(非原创)
    Android HttpClient框架get和post方式提交数据(非原创)
    Android ListView使用(非原创)
    ScrollView 的使用(非原创)
    Android SQLite API的使用(非原创)
    Android SQLite的使用2(非原创)
    位运算
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3876223.html
Copyright © 2011-2022 走看看