洛谷 1944

Posted E-Valley

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 1944相关的知识,希望对你有一定的参考价值。

  今天集训第一题就是它,只是换了一下输出,输出最长的美观的连续子序列的长度。

  刚开始做的时候,还想着这是栈的经典例题,然后我就默默地打了个队列(两个样例还过了一个),怕是石乐志了!!!!!陆陆续续调了一天!!!!!!这时候才想起来是栈。。。。。

  还有一点:别忘了判断栈是否已经为空!!!!!!

 1 #include <cstdio>
 2 #include <string>
 3 #include <stack>
 4 #include <iostream>
 5 
 6 std::string s;
 7 
 8 int ans, maxn;
 9 
10 void fs() {
11     std::stack<char> q;
12     int len = s.length();
13     for (int i = 0; i < len; ) {
14         while (s[i] == ( || s[i] == [ || s[i] == {) {
15             q.push(s[i++]);
16         }
17             
18         if (s[i] == )) {
19             if (!q.empty() && q.top() == () {                    // !!!!!判断是否栈空,为此我 RE 了 4 个点
20                 q.pop(), ans += 2, i++;
21                 if (maxn < ans) maxn = ans;
22             } else {
23                 while (s[i] == ) || s[i] == ] || s[i] == }) i++;
24                 while (!q.empty()) q.pop();
25                 ans = 0;
26             }
27         } else if (s[i] == ]) {
28             if (!q.empty() && q.top() == [)  {
29                 q.pop(), ans += 2, i++;
30                 if (maxn < ans) maxn = ans;
31             } else {
32                 while (s[i] == ) || s[i] == ] || s[i] == }) i++;
33                 while (!q.empty()) q.pop();
34                 ans = 0;
35             }
36         } else if (s[i] == }) {
37             if (!q.empty() && q.top() == {)  {
38                 q.pop(), ans += 2, i++;
39                 if (maxn < ans) maxn = ans;
40             } else {
41                 while (s[i] == ) || s[i] == ] || s[i] == }) i++;
42                 while (!q.empty()) q.pop();
43                 ans = 0;
44             }
45         }
46     }
47     
48 }
49 
50 int main() {
51     freopen("sequence.in", "r", stdin);
52     freopen("sequence.out", "w", stdout);
53     
54     std::cin >> s;
55     
56     fs();
57     
58     printf("%d\n", maxn);
59     return 0;
60 }

                                                                                   2017.10.16

以上是关于洛谷 1944的主要内容,如果未能解决你的问题,请参考以下文章

1944:吃糖果(斐波那契数列)

HDU1944 S-NIM(多个NIM博弈)

COGS 1944. 背驮式行走

(递归)1944:吃糖果

openjudge1944 吃糖果

第1944期HTTP/3原理与实践