发奖金

题目描述

 狐进行了一次黑客马拉松大赛,全公司一共分为了N个组,每组一个房间排成一排开始比赛,比赛结束后没有公布成绩,但是每个组能够看到自己相邻的两个组里比自己成绩低的组的成绩,比赛结束之后要发奖金,以1w为单位,每个组都至少会发1w的奖金,另外,如果一个组发现自己的奖金没有高于比自己成绩低的组发的奖金,就会不满意,作为比赛的组织方,根据成绩计算出至少需要发多少奖金才能让所有的组满意。 

输入描述:

每组数据先输入N,然后N行输入N个正整数,每个数表示每个组的比赛成绩。

输出描述:

输出至少需要多少w的奖金

输入

10
20
32
12
32
45
11
21
31
41
33

输出

20

思路:初始化奖金数组为1,从左往右遍历,如果右边大于左边,则将右边分配的奖金加1(满足大于左边的需求),从右往左遍历,如果左边大于右边,且左边分配的奖金小于(右边分配的奖金+1),则更新左边分配的奖金(满足大于右边的需求)
<?php
function clear( &$moneys )
{
    foreach ($moneys as &$money)
    {
        $money = 1;
    }
}

function main( $num )
{
    $i = 0;
    $scores = array();
    while ($i < $num)
    {
        $scores[] = intval(trim(fgets(STDIN)));
        $i++;
    }
    $moneys = $scores;
    clear($moneys);

   //从左往右遍历,满足大于左边的限制
    for ($i = 1; $i < $num; $i++ )
    {
        if ($scores[$i] > $scores[$i-1])
        {
            $moneys[$i] = $moneys[$i-1] + 1;
        }
    }

    //从右往左遍历,满足大于右边的限制
    for ($i = $num - 2; $i >= 0; $i--)
    {
        //左边分数大于右边分数
        if ( ($scores[$i] > $scores[$i+1]) )
        {
            //左边分配奖金小于(右边分配奖金+1)进行更新
            if ($moneys[$i] <= $moneys[$i+1])
            {
                $moneys[$i] = $moneys[$i+1] + 1;
            }
        }
    }
    return array_sum( $moneys );

}
while ($num = trim(fgets(STDIN)))
{
    print main( $num )."\n";
}

 

原文地址:https://www.cnblogs.com/cing123/p/9833017.html

时间: 2024-10-30 15:50:58

发奖金的相关文章

P1377发奖金

Bsny最近公司运作不佳,本年度利润才m元,但员工的奖金还是要发的,公司有n个员工,怎么发奖金这个完全由老板Bsny自己决定.Bsny想要么把这m元全发了,激励一下员工,但具体怎么分配方案有很多.比如m=1, n=2, 那么可以员工1发1元,员工2发0元:也可以员工1发0元,员工2发1元,有两种方案. 但其实,Bsny还是有点吝啬的,他想这m元不一定全部作为奖金,可以部分留给自己,这样的话,发奖金的方案数就更多了.还是以m=1, n=2为例子: 方案1:员工1发1元,员工2发0元 方案2:员工1

[编程题-搜狐]发奖金

[编程题] 发奖金 狐进行了一次黑客马拉松大赛,全公司一共分为了N个组,每组一个房间排成一排开始比赛,比赛结束后没有公布成绩,但是每个组能够看到自己相邻的两个组里比自己成绩低的组的成绩,比赛结束之后要发奖金,以1w为单位,每个组都至少会发1w的奖金,另外,如果一个组发现自己的奖金没有高于比自己成绩低的组发的奖金,就会不满意,作为比赛的组织方,根据成绩计算出至少需要发多少奖金才能让所有的组满意. 输入描述: 每组数据先输入N,然后N行输入N个正整数,每个数表示每个组的比赛成绩. 输出描述: 输出至

费教科书的发奖金的甲方将减肥的飞

www.meimeidu.com/Theme/Details/198600/0www.meimeidu.com/Theme/Details/198599/0www.meimeidu.com/Theme/Details/198598/0www.meimeidu.com/Theme/Details/198597/0www.meimeidu.com/Theme/Details/198596/0www.meimeidu.com/Theme/Details/198595/0www.meimeidu.com

【宁波市赛2014】小李发奖金

题面传送门 贪心 #include <cstdio> #include <iostream> #include <algorithm> using namespace std; int a[50000]; int main() { int n; cin >> n; for (int i = 0; i < n; i++) cin >> a[i]; sort(a, a + n); int ans = 0; for (int i = 0; i &

23.奖金(拓扑排序)

奖金(拓扑排序) [问题描述] 由于无敌的凡凡在2005年世界英俊帅气男总决选中胜出,Yali Company总经理Mr.Z心情好,决定给每位员工发奖金.公司决定以每个人本年在公司的贡献为标准来计算他们得到奖金的多少.于是Mr.Z下令召开m方会谈.每位参加会谈的代表提出了自己的意见:“我认为员工a的奖金应该比b高!”Mr.Z决定要找出一种奖金方案,满足各位代表的意见,且同时使得总奖金数最少.每位员工奖金最少为100元. [输入格式] 第一行两个整数n,m,表示员工总数和代表数:以下m行,每行2个

奖金提成

#include <stdlib.h> #include<iostream> #include "oj.h" using namespace std; /* 功能: 企业发放的奖金根据利润提成. 利润低于或等于100000元的,奖金可提10%: 利润高于100000元,低于200000元(100000<I≤200000)时: 低于100000元的部分按10%提成: 高于100000元的部分,可提成 7.5%: 200000<I≤400000时,低于2

拓扑排序——奖金

奖金 [问题描述] 由于无敌的凡凡在2005年世界英俊帅气男总决选中胜出,Yali Company总经理Mr.Z心情好,决定给每位员工发奖金.公司决定以每个人本年在公司的贡献为标准来计算他们得到奖金的多少.于是Mr.Z下令召开m方会谈.每位参加会谈的代表提出了自己的意见:“我认为员工a的奖金应该比b高!”Mr.Z决定要找出一种奖金方案,满足各位代表的意见,且同时使得总奖金数最少.每位员工奖金最少为100元. [输入格式] 第一行两个整数n,m,表示员工总数和代表数:以下m行,每行2个整数a,b,

4040 EZ系列之奖金

4040 EZ系列之奖金 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题目描述 Description 由于无敌的WRN在2015年世界英俊帅气男总决选中胜出,EZ总经理Mr.Lin心情好,决定给每位员工发奖金.EZ决定以每个人本年在EZ的贡献为标准来计算他们得到奖金的多少. 于是Mr.Lin下令召开m方会谈.每位参加会谈的代表提出了自己的意见:“我认为学生a的奖金应该比b高!”Mr.Lin决定要找出一种奖金方案,满足各位代表的意见,且同时使得总奖金数最

华为内部解读:任正非最厉害的秘密(发钱是艺术,以客户为中心,以奋斗中为本)

大家如果了解华为的人力资源管理体系,它主要是几大模块,一个是绩效管理模块,一个是薪酬管理体系模块,一个是任职资格管理体系模块.这三大模块是人力资源最主要的内容. 2013年12月4—6日,走进华为第四期活动在华为深圳总部举行.在6日上午的培训上,围绕华为的价值观与管理之道,华为前副总裁.曾全程主导华为人力资源管理体系建立的张建国先生与众位岛邻进行了分享. 张建国指出,企业家分三类,第一类是技术型,公司的寿命取决于产品的寿命;第二类是销售型,公司能做多大,取决于老板能掌握多少客户资源;第三类是既不