zoukankan      html  css  js  c++  java
  • 7-1 Panda and PP Milk (20 分)

    panda.jpg

    PP milk (盆盆奶)is Pandas' favorite. They would line up to enjoy it as show in the picture. On the other hand, they could drink in peace only if they believe that the amount of PP milk is fairly distributed, that is, fatter panda can have more milk, and the ones with equal weight may have the same amount. Since they are lined up, each panda can only compare with its neighbor(s), and if it thinks this is unfair, the panda would fight with its neighbor.

    Given that the minimum amount of milk a panda must drink is 200 ml. It is only when another bowl of milk is at least 100 ml more than its own that a panda can sense the difference.

    Now given the weights of a line of pandas, your job is to help the breeder(饲养员)to decide the minimum total amount of milk that he/she must prepare, provided that the pandas are lined up in the given order.

    Input Specification:

    Each input file contains one test case. For each case, first a positive integer n (≤) is given as the number of pandas. Then in the next line, n positive integers are given as the weights (in kg) of the pandas, each no more than 200. the numbers are separated by spaces.

    Output Specification:

    For each test case, print in a line the minimum total amount of milk that the breeder must prepare, to make sure that all the pandas can drink in peace.

    Sample Input:

    10
    180 160 100 150 145 142 138 138 138 140
     

    Sample Output:

    3000
     

    Hint:

    The distribution of milk is the following:

    400 300 200 500 400 300 200 200 200 300


    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=100005;
    int a[maxn];
    int w[maxn];
    int main(){
        int n;
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d",&w[i]);
            a[i]=200;
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<n-1;j++){
                if(w[j]>w[j+1]&&a[j]<=a[j+1]){
                    a[j]+=100;
                }
            }
            for(int k=n-1;k>=1;k--){
                if(w[k]>w[k-1]&&a[k]<=a[k-1]){
                    a[k]+=100;
                }
            }
        }
        int sum=0;
        for(int i=0;i<n;i++){
            sum+=a[i];
        }
        printf("%d
    ",sum);
        return 0;
    }
  • 相关阅读:
    Python中的sorted函数以及operator.itemgetter函数
    a=a+(a++);b=b+(++b);计算顺序,反汇编
    带基虚类的构造函数执行顺序
    开源系统管理资源大合辑
    linux的LNMP架构介绍、MySQL安装、PHP安装
    lamp下mysql安全加固
    ITSS相关的名词解释
    从苦逼到牛逼,详解Linux运维工程师的打怪升级之路
    Linux 文件系统概览
    Exchange2010批量删除邮件
  • 原文地址:https://www.cnblogs.com/dreamzj/p/14521509.html
Copyright © 2011-2022 走看看