zoukankan      html  css  js  c++  java
  • hihocoder Challenge 29 D. 不上升序列

    这场爆零比赛题目还是要补的

    这道题据说是出烂掉的原题,我找了下

    CF13.C/ CF371 div1 C,一模一样 我服这群原题大佬

    Fi[x]为 当A[i]<=x时,使A[1i] 不严格递增的最小步数,那么

    i==1 Fi[x]=minxy=1|A[i]y|

    Otherwise Fi[x]=minxy=1(Fi1[y]+|A[i]y|)

    显然Fi[x]是不严格单调递减的曲线

    那么我令 OPTi=Fi[x]OPTi有个重要的信息,就是斜率是递增的x0

    ChangeiOPTi的斜率变为0时的拐点对应 x 大小, 则分类讨论

    Changei1<=A[i],那么必在A[i]达到理想状态,和OPTi1结合为OPTi鞋履更陡,

    Changei1>A[i],那么x<=A[i]斜率递减,x>A[i]会在一个地方达到交点,必是Changei1,那个就是最优点

    好吧我还是不太理解,我尽力了,发一下链接,CF371 div1C comment

    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <ctime>
    #include <algorithm>
    #include <iostream>
    #include <map>
    #include <set>
    #include <queue>
    #include <cmath>
    using namespace std;
    typedef long long ll;
    #define lson l,m, rt<<1
    #define rson m+1, r, rt<<1|1
    const int N = 2e5+5;
    const int INF = 0x3f3f3f3f;
    
    int main() {
        int n;
        while(~scanf("%d", &n) ) {
            priority_queue<int> Q;
    
            int ans = 0;
            for(int i = 0; i < n; ++i) {
                int a; scanf("%d", &a); 
                a = -a;
                Q.push(a);
                if(Q.top() != a) {
                    ans += Q.top() - a;
                    Q.pop();
                    Q.push(a);
                }
            }
    
            printf("%d
    ", ans);
        }
        return 0;
    }
    
  • 相关阅读:
    python 闭包
    并行【parallel】和并发【concurrency】线程是并发还是并行,进程是并发还是并行
    生成器,送代器的区别
    深拷贝和浅拷贝的区别
    对缺省参数的理解
    对不定长参数的理解
    mysql三范式
    mysql基础查询语法
    mysql常见查询练习题
    Ubantu-Nginx部署
  • 原文地址:https://www.cnblogs.com/Basasuya/p/8433697.html
Copyright © 2011-2022 走看看