zoukankan      html  css  js  c++  java
  • csu 1901: 赏赐 OR 灾难

    1901: 赏赐 OR 灾难

            Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 86     Solved: 13    


    Description

    大G南征北战终于打下了大片土地成立了G国,大G在开国大典上传召帮助自己南征北战的三大开国元勋小A,小B,小C进殿,并要赏赐三人大量宝物以显示天恩浩荡。大G在征服其他国家的时候抢夺了n箱宝物,他把这些箱子依次排列在三人面前,每个箱子里的宝物都有一个价值wi,大G令他们一人选取一个箱子作为奖励。 可是令大G万万没有想到的是,三人在私底下是存在竞争关系的,由于小B手上兵权强于小C,小C手上兵权强于小A。所以弱者总是担心自己领取的赏赐高于或等于强者会招来杀身之祸。所以他们三人总是会让小B先选取奖励之后,小C会在小B选择的右侧区域选择价值比小B小的奖励,而小A则会在小B选择的左侧区域选择价值比小B和小C都小的奖励。当然小B是个聪明人,他也会考虑到两人的想法选择对大家都有帮助的方案选取。请问是否存在这样一种选择方案让大家都不用担心会招致杀身之祸。如果存在输出“YES”,否则输出“NO”

    Input

    多组数据读入
    每组数据第一行输入一个正整数n表示n箱宝物(n<=100000) 接下来一行输入n个正整数w1,w2,w3,...,wn表示n箱宝物的价值。(wi<=10000000) 题目保证所有数据n的总和不超过500000

    Output

    如果存要求的选择方案则输出“YES”,否则输出“NO”。

    Sample Input

    6
    1 2 3 6 5 4
    6
    1 2 3 4 5 6
    

    Sample Output

    YES
    NO
    

    Hint

    第一组数据中,小B可以先选择价值为6的箱子,小A可以在其左侧选择价值为2的箱子,小C可以在其右侧选择价值为5的箱子,这样大家都不用担心给自己招来杀身之祸。 第二组数据找不到任意一种选择方案,输出NO。

    Source

    中南大学第十一届大学生程序设计竞赛

    Author

    Forget_ever

     1 #include<iostream>
     2 #include<string>
     3 #include<cstdio>
     4 #include<stack>
     5 #include<algorithm>
     6 using namespace std;
     7 int a[100005];
     8 int mi[100005];
     9 int ma[100005];
    10 stack<int> p;
    11 int main()
    12 {
    13     int n,hz;
    14     while(cin>>n)
    15     {
    16         while(!p.empty())p.pop();
    17         for(int i=1;i<=n;i++)
    18         {
    19             scanf("%d",&a[i]);
    20             if(i==1) mi[i]=a[i];
    21             else mi[i]=min(mi[i-1],a[i]);
    22         }
    23         bool flag=false;
    24         p.push(a[n]);
    25         ma[n]=-1;
    26 
    27         for(int i=n-1;i>=2;i--)
    28         {
    29              hz=-1;
    30             while(!p.empty()&&p.top()<a[i])
    31             {
    32                 hz=p.top();
    33                 p.pop();
    34             }
    35             p.push(a[i]);
    36             ma[i]=hz;
    37         }
    38 
    39      /*  for(int i=2;i<=n;++i)
    40         {
    41             printf("%d ",ma[i]);
    42         }
    43   printf("
    ");*/
    44          for(int i=2;i<n;++i)
    45         {
    46             if(mi[i-1]<ma[i]&&ma[i]<a[i])
    47             {
    48                 flag=1;
    49                 break;
    50             }
    51         }
    52         if(flag) cout<<"YES"<<endl;
    53         else cout<<"NO"<<endl;
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    各种有趣vbs,bat脚本
    weblogic ssrf 漏洞笔记
    jboss反序列化漏洞实战渗透笔记
    脏牛提权
    Bugku-cms1
    通过Tomcat Manager拿shell
    【转】网站渗透入侵常见谷歌黑客语法总结
    【转】AWVS扫描小技巧
    学习笔记
    三栏布局那些事儿
  • 原文地址:https://www.cnblogs.com/52why/p/7461454.html
Copyright © 2011-2022 走看看