码迷,mamicode.com
首页 > 其他好文 > 详细

HDU4891 - The Great Pan

时间:2016-11-04 01:13:31      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:getchar   cst   独立   algorithm   个数   ring   ace   iostream   ret   

题意

太长不好概述

思路

1. 求每个{}内的‘|’个数, ans *= ‘|’个数+1

2. $$之间每连续的空格个数,每有一个连续的n个空格,ans *= 空格+1

3. 每个{},$$之间是独立的,所求ans相乘

4. 不存在{}, $$之间或自己的嵌套,所以没坑,思路不难

5. 一定要时刻判断超没超1e5,减少循环次数

总结

WA在了long long上,微笑脸。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #include <cstring>
 5 using namespace std;
 6 const int maxn = 1e5;
 7 typedef long long LL;
 8 int n;
 9 string s;
10 LL format1()
11 {
12     LL ans = 1, t = 1;
13     LL len = s.size();
14     bool flag = false;
15     for(LL i = 0; i < len; i++){
16         if(s[i] == { && !flag){
17             flag = true;
18             t = 1;
19         }
20         else if(s[i] == | && flag) {
21             t++;
22             if(t > maxn) return t;
23         }
24         else if(s[i] == } && flag){
25             flag = false;
26             ans *= t;
27             if(ans > maxn) return ans;
28         }
29     }
30     return ans;
31 }
32 LL format2()
33 {
34     LL ans = 1, t = 1;
35     LL len = s.size();
36     bool flag = false;
37     for(LL i = 0; i < len; i++){
38         if(s[i] == $ && !flag){
39             flag = true;
40             t = 1;
41         }
42         else if(s[i] ==   && flag){
43             t++;
44             if(t > maxn) return t;
45             if(s[i+1] !=  ){
46                 ans *= t;
47                 t = 1;
48                 if(ans > maxn) return ans;
49             }
50         }
51         else if(s[i] == $ && flag){
52             flag = false;
53         }
54     }
55     return ans;
56 }
57 int main()
58 {
59    //freopen("in.txt", "r", stdin);
60     while(scanf("%d", &n) != EOF){
61         getchar();
62         s = "";
63         for(int i = 0; i < n; i++){
64             string temp;
65             getline(cin , temp);
66             s += temp;
67         }
68         bool doge = false;
69         LL ans = 0;
70         LL ans1 = format1();
71         if(ans1 > maxn) doge = true;
72         else{
73             LL ans2 = format2();
74             if(ans2 > maxn) doge = true;
75             else{
76                 ans = ans1 * ans2;
77                 if(ans > maxn) doge = true;
78             }
79         }
80         if(doge) cout << "doge" << endl;
81         else cout << ans << endl;
82     }
83     return 0;
84 }

 

HDU4891 - The Great Pan

标签:getchar   cst   独立   algorithm   个数   ring   ace   iostream   ret   

原文地址:http://www.cnblogs.com/md-zz/p/6028733.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!