zoukankan      html  css  js  c++  java
  • hihoCoder挑战赛29

    多打打不同的比赛,找经验啊

    题目4 : 不上升序列

    时间限制:40000ms
    单点时限:2000ms
    内存限制:256MB

    描述

    给定一个长度为 n 的非负整数序列 a[1..n]。

    你每次可以花费 1 的代价给某个 a[i] 加1或者减1。

    求最少需要多少代价能将这个序列变成一个不上升序列。

    输入

    第一行一个正整数 n

    接下来 n 行每行一个非负整数,第 i 行表示 a[i]。

    1 ≤ n ≤ 500000

    0 < a[i] ≤ 109

    输出

    一个非负整数,表示答案。

    样例解释

    [5,3,4,5] -> [5,4,4,4]

    样例输入
    4
    5
    3
    4
    5
    样例输出
    2


    hiho的代码
    #include <bits/stdc++.h>
    using namespace std;
    long long c,n,k;
    priority_queue<int,vector<int>, greater<int>  >a;
    int main(){
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>c;
            a.push(c);
            if(a.top()<c){
            k+=c-a.top();
            a.pop();
            a.push(c);
            }
        }
        cout<<k;
        return 0;
    }

    变成相反数,不用重载写起来舒服的

    #include <bits/stdc++.h>
    using namespace std;
    long long c,n,k;
    priority_queue<int>a;
    int main()
    {
        cin>>n;
        for(int i=0; i<n; i++)
        {
            cin>>c;
            c=-c,a.push(c);
            if(a.top()>c)k+=a.top()-c,a.pop(),a.push(c);
        }
        cout<<k;
        return 0;
    }

    大佬们都讲是原题,找了下这个题

    time limit per test
    1 second
    memory limit per test
    64 megabytes
    input
    standard input
    output
    standard output

    Little Petya likes to play very much. And most of all he likes to play the following game:

    He is given a sequence of N integer numbers. At each step it is allowed to increase the value of any number by 1 or to decrease it by 1. The goal of the game is to make the sequence non-decreasing with the smallest number of steps. Petya is not good at math, so he asks for your help.

    The sequence a is called non-decreasing if a1 ≤ a2 ≤ ... ≤ aN holds, where N is the length of the sequence.

    Input

    The first line of the input contains single integer N (1 ≤ N ≤ 5000) — the length of the initial sequence. The following N lines contain one integer each — elements of the sequence. These numbers do not exceed 109 by absolute value.

    Output

    Output one integer — minimum number of steps required to achieve the goal.

    Examples
    input
    5
    3 2 -1 2 11
    output
    4
    input
    5
    2 1 1 1 1
    output
    1
    CF的这道题代码如下
    #include <bits/stdc++.h>
    using namespace std;
    long long c,n,k;
    priority_queue<int>a;
    int main(){
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>c;
            a.push(c);
            if(a.top()>c){
            k+=a.top()-c;
            a.pop();
            a.push(c);
            }
        }
        cout<<k;
        return 0;
    }
  • 相关阅读:
    API Hook完全手册
    ASP.NET页面刷新的实现方法
    ASP.NET验证码
    ASP.NET优化性能的方法
    Asp.net中Server.Transfer,Server.Execute和Response.Redirect的区别
    FireFox新标签页打开搜索和书签
    win10里如何在中文输入法里添加美式键盘
    Sublime Text 3中文乱码问题解决
    Win2008 r2 IIS7.5出现“FastCGI进程最近常常失败。请过一会再尝试此请求”的解决方法
    Sublime Text 3中设置不记住上次打开的文件
  • 原文地址:https://www.cnblogs.com/BobHuang/p/7077984.html
Copyright © 2011-2022 走看看