zoukankan      html  css  js  c++  java
  • [NOIP2018模拟赛]d

    d题大概是让有n个矩阵,可以随意平移,问删除m个矩阵后最大的面积交是多少。

    其实思路很显然。

    肯定删x个a最小的和m-x个b最小的。

    然后我们先删m个a最小的,然后逐渐少删a,开始删b,用个堆维护b的最小值。

    然后就可以了。

    代码并没有测。

    #include <iostream>
    #include <queue>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    const int N=1e5+5;
    typedef long long ll;
    int T,n,m;
    struct Node{
        int x,y;
    }a[N];
    priority_queue<int,vector<int>,greater<int> >q;
    bool cmp1(Node x,Node y) {return x.x<y.x;}
    bool cmp2(Node x,Node y) {return x.y<y.y;}
    int main() {
        scanf("%d",&T);
        while(T--) {
            scanf("%d%d",&n,&m);
            for(int i=1;i<=n;i++) scanf("%d%d",&a[i].x,&a[i].y);
            if(m>=n-1) {
                ll ans=0;
                for(int i=1;i<=n;i++) ans=max(ans,1ll*a[i].x*a[i].y);
                continue;
            }
            while(!q.empty()) q.pop();
            sort(a+1,a+1+n,cmp1);
            for(int i=m+1;i<=n;i++) q.push(a[i].y);
            ll ans=1ll*a[m+1].x*q.top();
            for(int i=m;i;i--) {
                q.push(a[i].y);
                if(a[i].x*q.top()>ans) ans=1ll*a[i].x*q.top();
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }
    D
    我是咸鱼。转载博客请征得博主同意Orz
  • 相关阅读:
    兑奖
    杨辉三角
    偶数求和
    进制转化
    填词
    等值数目
    Spring框架的七个模块
    数据库中的第1、2、3范式 (昨天没睡好,因为那个蚊子~~)
    关于eclipse 不编译或者找不到*.class的问题
    servlet生命周期的理解
  • 原文地址:https://www.cnblogs.com/sdfzhsz/p/9778596.html
Copyright © 2011-2022 走看看