• 1008 Envy(好题¥)


    1008: Envy

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 288  解决: 61
    [提交][状态][讨论版]

    题目描述

    今年的 ACM 比赛推出了一个赛后的娱乐活动,所有参赛选手排成一排玩击鼓传花,关于击鼓传花的玩法是这样的: 
     
    数人或几十人围成圆圈坐下,其中一人拿花(或一小物件);另有一人背着大家或蒙眼击鼓(桌子、黑板或其他能发出声音的物体),鼓响时众人开始依次传花,至鼓停止为止。此时花在谁手中(或其座位前),谁就上台表演节目(多是唱歌、跳舞、说笑话;或回答问题、猜谜、按纸条规定行事等);偶然如果花在两人手中,则两人可通过猜拳或其它方式决定负者。 
    击鼓传花是一种老少皆宜的游戏。胡锦 涛总书记 2012 儿童节前夕考察少年宫时就曾与小朋友玩击鼓传花。 当然,就和大多数的 ACM 题面的套路一样,我们上面也说了一段废话,下面我们来说一下正题...... 
     
    我们让 N 个人站成一排,编号为 1~N,每个人都有一个数字代表他这次比赛的成绩,对于每个人,如果他后面(编号大于他的人中)存在一个人的成绩大于等于他,那么他的嫉妒值为他们之间的距离。两个点 a和 b 之间的距离为 abs(a - b)。例如:{4,3,6,2},那么第 1 个人对第 3 个人有 2 点嫉妒值;第 2 个人对第 3 个人有 1 点嫉妒值,最大嫉妒值为 2。 

    输入

    第 1 行:1 个整数 N,代表这里有 N 个人(2 <= N <= 50000)。 
    接下来的 N 行:每行一个数 Ai(1 <= Ai <= 10^9),  表示第 i 个人的比赛成绩。 

    输出

    输出最大嫉妒值。 

    样例输入

    4
    4
    3
    6
    2
    

    样例输出

    2
    

    提示

    有多种解法,待整理,

    最小前缀,双指针写法,

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int MAXN = 1e5 + 5;
     5 
     6 int a[MAXN];
     7 int b[MAXN];
     8 
     9 int main()
    10 {
    11     int n;
    12     int i, j;
    13     int ans;
    14 
    15     while (~scanf("%d", &n)) {
    16         scanf("%d", &a[0]);
    17         b[0] = a[0];
    18         for (i = 1; i < n; ++i) {
    19             scanf("%d", &a[i]);
    20             b[i] = min(b[i - 1], a[i]);
    21         }
    22 
    23         ans = 0;
    24         j = n - 1;
    25         for (i = n - 1; i >= 0; --i) {
    26             while (b[i] > a[j]) {
    27                 --j;
    28             }
    29             if (a[i] <= a[j]) {
    30                 ans = max(ans, j - i);
    31             }
    32         }
    33         printf("%d
    ", ans);
    34     }
    35 
    36     return 0;
    37 }
  • 相关阅读:
    dedecms初解
    Java二十三设计模式之------单例模式
    Java二十三设计模式之------工厂方法模式
    数组和集合的区别及深入了解
    团队项目计划
    团队介绍及团队题目
    第二阶段冲刺(第十天)
    第二阶段冲刺(第九天)
    第二阶段冲刺(第八天)
    第二阶段冲刺(第七天)
  • 原文地址:https://www.cnblogs.com/gongpixin/p/6790570.html
Copyright © 2020-2023  润新知