zoukankan      html  css  js  c++  java
  • Princess Principal(思维题)

    Princess Principal

    https://www.nowcoder.com/acm/contest/201/J

    题目描述

    阿尔比恩王国(the Albion Kingdom)潜伏着一群代号“白鸽队(Team White Pigeon)”的间谍。在没有任务的时候,她们会进行各种各样的训练,比如快速判断一个文档有没有语法错误,这有助于她们鉴别写文档的人受教育程度。
    这次用于训练的是一个含有n个括号的文档。括号一共有m种,每种括号都有左括号和右括号两种形式。我们定义用如下的方式定义一个合法的文档:
    1.一个空的字符串是一个合法的文档。
    2.如果A,B都是合法的文档,那么AB也是合法的文档。
    3.如果S是合法的文档,那么aSb也是合法的文档,其中a,b是同一种括号,并且a是左括号,b是右括号。
    现在给出q个询问,每次询问只考虑文档第l至r个字符的情况下,文档是不是合法的。

    输入描述:

    第一行两个整数n,m,q(1 ≤ n,m,q ≤ 10
    6
    )。第二行有n个空格隔开的整数x,第i个整数x
    i
    (0 ≤ x
    i
     < m*2)代表文档中的第i个字符是第
    种括号。另外,如果x
    i
    是偶数,它代表一个左括号,否则它代表一个右括号。
    接下来q行,每行两个空格隔开的整数l,r(1 ≤ l ≤ r ≤ n),代表询问第l至r个字符构成的字符串是否是一个合法的文档。

    输出描述:

    输出共q行,如果询问的字符串是一个合法的文档,输出"Yes",否则输出"No"。

    输入

    6 4 3
    0 2 3 1 4 7
    1 4
    1 5
    5 6

    输出

    Yes
    No
    No


    个人感觉思路很神奇,可能是因为我太菜了。。。
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<string>
     5 #include<stack>
     6 using namespace std;
     7 
     8 int a[1000005];
     9 int ans[1000005];
    10 
    11 int main(){
    12     std::ios::sync_with_stdio(false);
    13     int n,m,q;
    14     stack<int>st;
    15     cin>>n>>m>>q;
    16     for(int i=1;i<=n;i++){
    17         cin>>a[i];
    18     }
    19     for(int i=1;i<=n;i++){
    20         if(st.empty()){
    21             st.push(i);
    22         }
    23         else if((a[st.top()]/2!=a[i]/2)||(a[st.top()]+1!=a[i])){
    24             st.push(i);
    25         }
    26         else{
    27             st.pop();
    28         }
    29         if(st.empty()){
    30             ans[i]=0;
    31         }
    32         else{
    33             ans[i]=st.top();
    34         }
    35     }
    36     int x,y;
    37     while(q--){
    38         cin>>x>>y;
    39         if((y-x)&1){
    40             if(ans[y]==ans[x-1]){
    41                 puts("Yes");
    42             }
    43             else{
    44                 puts("No");
    45             }
    46         }
    47         else{
    48             puts("No");
    49         }
    50     }
    51 }
    View Code
     
  • 相关阅读:
    与IBM的Lin Sun关于Istio 1.0和微服务的问答
    与IBM的Lin Sun关于Istio 1.0和微服务的问答
    与IBM的Lin Sun关于Istio 1.0和微服务的问答
    各种排序算法汇总
    更改一个链接的文本、URL 以及 target
    使用javascript中读取Xml文件做成的一个二级联动菜单
    HTML DOM 实例
    HTML DOM
    js中邦定事件与解绑支持匿名函数
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/Fighting-sh/p/9735679.html
Copyright © 2011-2022 走看看