zoukankan      html  css  js  c++  java
  • CF1140C Playlist

    给你n个二元组,选出不多于k个满足第一维的min乘上第二维的sum最大。

    傻逼题,按第一维排个序然后对顶堆求第二维前k大之和就没了。

     1 #include <bits/stdc++.h>
     2 
     3 typedef long long LL;
     4 const int N = 300010;
     5 
     6 std::priority_queue<int> Q1, Q2;
     7 struct Node {
     8     int a, t;
     9     inline bool operator <(const Node &w) const {
    10         return a < w.a;
    11     }
    12 }node[N];
    13 int k;
    14 LL sum;
    15 
    16 inline void insert(int x) {
    17     if(!Q2.size() || x > Q2.top()) {
    18         Q1.push(-x);
    19         sum += x;
    20     }
    21     else Q2.push(x);
    22     while(Q1.size() > k) {
    23         Q2.push(-Q1.top());
    24         sum += Q1.top();
    25         Q1.pop();
    26     }
    27     while(Q1.size() < k && Q2.size()) {
    28         Q1.push(-Q2.top());
    29         sum += Q2.top();
    30         Q2.pop();
    31     }
    32     return;
    33 }
    34 
    35 int main() {
    36     int n;
    37     scanf("%d%d", &n, &k);
    38     for(int i = 1; i <= n; i++) {
    39         scanf("%d%d", &node[i].t, &node[i].a);
    40     }
    41     std::sort(node + 1, node + n + 1);
    42 
    43     LL ans = 0;
    44     for(int i = n; i >= 1; i--) {
    45         insert(node[i].t);
    46         ans = std::max(ans, 1ll * node[i].a * sum);
    47     }
    48 
    49     printf("%lld
    ", ans);
    50     return 0;
    51 }
    AC代码
  • 相关阅读:
    C++的虚函数与多态
    Qt界面的个性设置QSS
    Qt添加背景图片应该注意的问题
    c/c++的函数参数与返回值
    堆和栈
    linux下挂载u盘
    Qt的主窗口弹出消息框
    智能家居实训系统的项目有感!
    Qt 快捷键
    FB
  • 原文地址:https://www.cnblogs.com/huyufeifei/p/10589481.html
Copyright © 2011-2022 走看看