The Great Pan

题目链接:

http://acm.hust.edu.cn/vjudge/contest/123554#problem/D

Description


```
As a programming contest addict, Waybl is always happy to take part in various competitive programming contests. One day, he was competing at a regional contest of Inventing Crappy Problems Contest(ICPC). He tried really hard to solve a "geometry" task without success.

After the contest, he found that the problem statement is ambiguous! He immediately complained to jury. But problem setter, the Great Pan, told him "There are only four possibilities, why don't you just try all of them and get Accepted?".

Waybl was really shocked. It is the first time he learned that enumerating problem statement is as useful as trying to solve some ternary search problem by enumerating a subset of possible angle!

Three years later, while chatting with Ceybl, Waybl was told that some problem "setters" (yeah, other than the Great Pan) could even change the whole problem 30 minutes before the contest end! He was again shocked.

Now, for a given problem statement, Waybl wants to know how many ways there are to understand it.

A problem statement contains only newlines and printable ASCII characters (32 ≤ their ASCII code ≤ 127) except '{', '}', '|' and 'blah blah$ indicates this part is printed in proportional fonts, it is impossible to determine how many space characters there are.

Note that A, B, C, D won't be duplicate, but could be empty. (indicate evil problem setters addedclarified it later.)

Also note that N consecutive spaces lead to N+1 different ways of understanding, not 2 N ways.

It is impossible to escape from "$$" and "{}" markups even with newlines. There won't be nested markups, i.e. something like "\({A|B}\)" or "{\(A\)|B}" or "{{A|B}|C}" is prohibited. All markups will be properly matched.

</big>

##Input
<big>
Input contains several test cases, please process till EOF.
For each test case, the first line contains an integer n, indicating the line count of this statement. Next n lines is the problem statement.
1 ≤ n ≤ 1000, size of the input file will not exceed 1024KB.
</big> ##Output
<big>
For each test case print the number of ways to understand this statement, or "doge" if your answer is more than 105.
</big> ##Sample Input
<big>

9

I'll shoot the magic arrow several

times on the ground, and of course

the arrow will leave some holes

on the ground. When you connect

three holes with three line segments,

you may get a triangle.

{|It is hole! Common sense!|

No Response, Read Problem

Statement|don't you know what a triangle is?}

1

Case \(1: = >\)

5

$/This is my code printed in

proportional font, isn't it cool?
/

printf("Definitely it is cooooooool

%d\n",4 * 4 * 4 * 4 * 4 * 4 * 4 * 4 * 4

  • 4 * 4 * 4 * 4 * 4 * 4 * 4 * 4 * 4);\(
    2
    \)Two space$ and {blue|

    red} color!
</big>

##Sample Output
<big>
4
4
doge
6
</big> <br/>
##题意:
<big>
计算给定的文字有多少种解释.
{} 中有 n 个 | 则有 n+1 种解释.
$$ 中每有 n个连续的空格则有 n+1 种解释.
不会出现上述两种形式的任何嵌套.
</big> <br/>
##题解:
<big>
由于不会出现嵌套,就比较简单了.
依次对每个出现的关键字符进行标记和计数即可.
注意:
数组要开大,否则TLE.
乘的过程有可能会爆int,要用longlong.
</big> <br/>
##代码:
``` cpp
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <vector>
#define LL long long
#define eps 1e-8
#define maxn 1010
#define mod 100000007
#define inf 0x3f3f3f3f
#define mid(a,b) ((a+b)>>1)
#define IN freopen("in.txt","r",stdin);
using namespace std; char str[5000000]; int main(int argc, char const *argv[])
{
//IN; int n;
while(scanf("%d", &n) != EOF)
{
getchar();
LL ans = 1;
int flag = 0;
LL cnt = 0;
bool flag1 = 0, flag2 = 0;
while(n--) {
gets(str);
int len = strlen(str);
if(flag) continue;
for(int i=0; i<len; i++) {
if(str[i] == '{') cnt = 0, flag1 = 1;
else if(str[i] == '}') {
flag1 = 0;
ans *= cnt + 1;
cnt = 0;
if(ans > 100000) {
flag = 1;
break;
}
}
else if(str[i] == '$') {
if(flag1) continue;
if(!flag2) cnt = 0, flag2 = 1;
else {
flag2 = 0;
ans *= cnt + 1;
cnt = 0;
if(ans > 100000) {
flag = 1;
break;
}
}
}
else if(str[i] == '|' && flag1) cnt++;
else if(str[i] == ' ' && flag2) {
cnt = 0;
while(i<len && str[i] == ' ') {
cnt++;
i++;
}
ans *= cnt + 1;
cnt = 0;
if(ans > 100000) {
flag = 1;
break;
}
i--;
}
}
} if(flag) printf("doge\n");
else printf("%lld\n", ans);
} return 0;
}

HDU 4891 The Great Pan (模拟)的更多相关文章

  1. HDU 4891 The Great Pan (字符串处理)

    题目链接:HDU 4891 The Great Pan 求一串字符有多少种不同的意思,当中关心'{','}'之间的'|'. 和'$','$'之间的空格,连续N个空格算N+1种. AC代码: #incl ...

  2. 2014多校第三场1005 || HDU 4891 The Great Pan(模拟)

    题目链接 题意 : 给你n行字符串,问你有多少种理解方式.有两大类的理解 (1){A|B|C|D|...}代表着理解方式可以是A,可以是B或C或者D. (2)$blah blah$,在$$这两个符号中 ...

  3. HDU 4891 The Great Pan (题意题+模拟)

    题意:给定一个文章,问你有多少种读法,计算方法有两种,如果在$中,如果有多个空格就算n+1,如果是一个就算2的次方,如果在{}中, 那么就是把每个空格数乘起来. 析:直接模拟,每次计算一行,注意上一行 ...

  4. HDU 4891 The Great Pan

    模拟题. #include<map> #include<set> #include<ctime> #include<cmath> #include< ...

  5. 2014联合三所学校 (HDU 4888 HDU 4891 HDU 4893)

    HDU 4891 The Great Pan 注册标题  他怎么说,你怎么样  需要注意的是乘法时,它会爆炸int 代码: #include<iostream> #include<c ...

  6. HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)

    HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...

  7. hdu 4891 模拟水题

    http://acm.hdu.edu.cn/showproblem.php?pid=4891 给出一个文本,问说有多少种理解方式. 1. $$中间的,(s1+1) * (s2+1) * ...*(sn ...

  8. hdu 4891 模拟

    题意:       给你一个串,问你有几种意思,有两个规则 (1) { }  答案乘以  ({}之间"|"的个数 + 1)  (2)  &&   答案乘以  (&a ...

  9. HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)

    Thickest Burger Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

随机推荐

  1. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  2. Pod::Executable pull

    使用cocoapods 的时候遇到了以下错误:[!] Pod::Executable pull Updating eaf98af..ba3c030 error: Your local changes ...

  3. sdut 2351 In Danger (找规律)

    题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2351 题意:xyez, xy表示一个十进 ...

  4. bzoj1185

    一遇到数学题和计算几何题我就要调半天…… 玛雅,我真是太弱了…… 基本思路很简单,先上凸包,然后矩形与凸包一边重合,然后旋转卡壳即可 然而我没怎么写过计算几何题,一开始写的各种囧,后来看了hzwer的 ...

  5. Asp.Net微信登录-手机网站APP应用

    要求:公众号必须先认证,认证费用¥300/年,比较黑 一.微信登录核心代码 //核心代码,没判断异常 1.登录页面 protected void Page_Load(object sender, Ev ...

  6. 如何在Asp.Net WebApi接口中,验证请求参数中是否携带token标识!

    [BasicAuthentication] public abstract class ApiControllerBase : ApiController { #region Gloal Proper ...

  7. Androidstudio下Generate signed apk提示Error: Expected resource of type id [ResourceType]解决办法

    只需要在报错位置所在的类上面添加: @SuppressWarnings("ResourceType") 即可实现Generate signed apk.

  8. [Sciter系列] MFC下的Sciter–5.Sciter中GUI线程研究

    [Sciter系列] MFC下的Sciter–5.Sciter中GUI线程研究,目前MFC存在问题,win32没问题. 本系列文章的目的就是一步步构建出一个功能可用,接口基本完善的基于MFC框架的Sc ...

  9. ZOJ 2587 Unique Attack (最小割唯一性)

    题意 判断一个无向图的割是否唯一 思路 错误思路:一开始想的是判断割边是否都是关键割边,那既然割边两端点能连通S.T点的边是关键边,那么只要遇到有某个边两端点不连通S or T则这条边就不是关键割边( ...

  10. 利用c#反射实现实体类生成以及数据获取与赋值

    转:http://hi.baidu.com/xyd21c/item/391da2fc8fb351c10dd1c8b8 原有的实体类成员逐个赋值与获取的方法弊端: 1.每次对实体类属性进行赋值时,都要检 ...