链接:https://ac.nowcoder.com/acm/contest/3005/I
来源:牛客网

天上有n颗星星,每颗星星有二维坐标(xi,yi)(x_i, y_i)(xi​,yi​),还有一个属性值ziz_izi​,若两颗星星A, B满足xA<xBx_A < x_BxA​<xB​且yA<yBy_A < y_ByA​<yB​且zA<zBz_A < z_BzA​<zB​,则这两颗星星可以配成一对,每颗星星最多只能在一对之中,求最多能配成多少对星星。

思路:贪心思想;

我们先按x从小到大排序,如果x相等,就按y从大到小;

然后接下来遍历数组;

遇到z值为0的就放进容器;遇到1的就去寻找容器中小于此数的y值且在容器中y最大的那个数进行匹配;然后将这个数删除

不断重复这个过程即可

证明:作者:nocriz
链接:https://ac.nowcoder.com/discuss/365889
来源:牛客网

假设最优方案中排序后Z=1Z = 1Z=1的第 1 个没有按贪心策略匹配的点 iii ,在设 iii 在Z=0Z = 0Z=0中它能匹配的 yyy 最大的点为 jjj,如果 jjj 被点 kkk 匹配了,有两种情况:

    • 原先 iii 没有和任何匹配,则直接去掉 kkk 的匹配,将 iii 和 jjj 匹配。
    • 原先 iii 和 mmm 匹配,则将 kkk 改成和 mmm 匹配,将 iii 和 jjj 匹配,由于Yj>YmY_j>Y_mYj​>Ym​, 这样的匹配一定是成立的。并且修改后的匹配数不会变少,因此按照该贪心策略可以得到最优解。
  •  #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int maxn=3e5+;
    struct node{
    int a,b,c;
    }p[maxn];
    int n;
    bool cmp(node x,node y)
    {
    if(x.a==y.a) return x.b>y.b;
    else return x.a<y.a;
    }
    int main()
    {
    cin>>n;
    for( int i=;i<n;i++ ) cin>>p[i].a>>p[i].b>>p[i].c;
    sort(p,p+n,cmp);
    multiset<int> pool;
    int ans=;
    for( int i=;i<n;i++ ){
    if( p[i].c ){
    multiset<int>::iterator it;
    it=pool.lower_bound( p[i].b );
    if( it!=pool.begin() ){
    --it;
    pool.erase(it);
    ans++;
    }
    }
    else pool.insert( p[i].b );
    }
    cout<<ans<<endl;
    return ;
    }

2020算法设计竞赛 I、匹配星星的更多相关文章

  1. 2020算法设计竞赛 C 汉诺塔

    作者:珩月链接:https://ac.nowcoder.com/discuss/367149来源:牛客网 将木板按照Xi从小到大排序,将这时的Yi数列记为Zi数列,则问题变成将Zi划分为尽可能少的若干 ...

  2. 2020算法设计竞赛 H 坐火车

    链接:https://ac.nowcoder.com/acm/contest/3005/H来源:牛客网 大致题意:让我们针对每一个数,求这个数左区间和右区间颜色相同(也就是数字相同)得对数: 比如:左 ...

  3. 2020年算法设计竞赛 DP

    链接:https://ac.nowcoder.com/acm/contest/3002/I来源:牛客网https://ac.nowcoder.com/acm/contest/3002/I 题目描述 & ...

  4. 2020 年TI 杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置)

    2020年TI杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置) 摘要:E题的竞赛内容主要是参赛者自己搭建一个晶体管放大器,能够产生不失真.顶部失真.底部失真.双向失真和交越失真五种波形,并分别 ...

  5. 算法设计手冊(第2版)读书笔记, Springer - The Algorithm Design Manual, 2ed Steven S.Skiena 2008

    The Algorithm Design Manual, 2ed 跳转至: 导航. 搜索 Springer - The Algorithm Design Manual, 2ed Steven S.Sk ...

  6. 痞子衡嵌入式:RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天给大家带来的是痞子衡的开源项目 RT-UFL. 痞子衡在近两年多的i.MXRT客户项目支持过程中,遇到的一个相当高频的问题就是制作i.MXRT下载算法.我们 ...

  7. OOP: One pont of view of OOP与基于算法设计的区别

    ..摘自<C++网络编程 卷1:运用ACE和模式消除复杂性> <C++ Network Programming Volume 1 Mastering Complexity with ...

  8. Python数据结构与算法设计总结篇

    1.Python数据结构篇 数据结构篇主要是阅读[Problem Solving with Python]( http://interactivepython.org/courselib/static ...

  9. 算法设计和数据结构学习_5(BST&AVL&红黑树简单介绍)

    前言: 节主要是给出BST,AVL和红黑树的C++代码,方便自己以后的查阅,其代码依旧是data structures and algorithm analysis in c++ (second ed ...

随机推荐

  1. DolphinScheduler源码分析之任务日志

    DolphinScheduler源码分析之任务日志 任务日志打印在调度系统中算是一个比较重要的功能,下面就简要分析一下其打印的逻辑和前端页面查询的流程. AbstractTask 所有的任务都会继承A ...

  2. Node.js文档-模块

    核心模块 Node为Javascript提供了很多服务器级别的API,绝大多数都被包装到了一个具名的核心模块中,例如文件操作的fs核心模块,http服务构建的http模块等,核心模块的使用必须通过re ...

  3. cf949C

    题意简述:有n个点,每一个点都有一个权值,然后有m个条件,每一个条件是a[x]!=a[y],让选择最少的点且至少选择1个,然后让这个点的权值+1,使得条件仍满足 所有数对k取模 题解:如果a[x]+1 ...

  4. java 上传文件到七牛云中

    import com.alibaba.fastjson.JSONObject;import com.qiniu.common.QiniuException;import com.qiniu.commo ...

  5. 并查集find,merge操作

    一.find操作 //find操作路径压缩版 inline int find(int x){ if(fa[x]==x) return x; int t=find(fa[x]); fa[x]=t; re ...

  6. MariaDB(MySQL)创建、删除、选择及数据类型使用详解

    一.MariaDB简介(MySQL简介略过) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行 ...

  7. Elasticsearch + Kibana 简单安装使用

    1.资料来源官网,参考: https://www.elastic.co/cn/downloads/elasticsearch https://www.elastic.co/cn/downloads/k ...

  8. 11、C++之const类成员变量,const成员函数

    //转载 类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变. 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 cons ...

  9. 使用centos6.5整理出来的常用命令

    1.Vi 基本操作1) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插 ...

  10. Spark学习之路 (十一)SparkCore的调优之Spark内存模型[转]

    概述 Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色.理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优.本文旨在 ...