链接: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. 转:静态链表及其创建(C语言实现)

    http://c.biancheng.net/view/3339.html 折半插入排序算法(C语言代码实现) http://c.biancheng.net/view/3440.html 二叉树层次遍 ...

  2. Dart中类的getter和setter

    Dart类Getters和Setter Getters和Setter(也称为访问器和更改器)允许程序分别初始化和检索类字段的值. 使用get关键字定义getter或访问器.Setter或存取器是使用s ...

  3. idea中创建maven的Javaweb工程并进行配置

    学完maven后,可以创建maven的javaweb工程,在创建完成后还需要一些配置,下面来说下具体步骤,在这里我创建的是一个模块,创建web项目的方式和创建模块一样 1.创建一个模块,点new-Mo ...

  4. VMware与Centos系统安装之重置root密码

    VMware与Centos系统安装之重置root密码   今日任务 1.Linux发行版的选择 2.vmware创建一个虚拟机(centos) 3.安装配置centos7 4.xshell配置连接虚拟 ...

  5. CF #619 div.2

    序 希望,不要还有一天像今天一样糟糕. T1 three strings 笔记本的google 炸了,读题可难受了 多组测试数据 我们的想法是,用string存字符串,若 对于任意的i,a[i],b[ ...

  6. linux 异常 - setsebool: SELinux is disabled.

    问题描述 运行命令:setsebool httpd_can_network_connect 1 或者 setsebool httpd_can_network_connect_db 1 报错:setse ...

  7. js日历三级联动

    直接切入正题 <html><head><title>年月日三下拉框联动</title><meta http-equiv='Content-Type ...

  8. PHP0008:PHP基础-数组

  9. HashMap (JDK1.8) 分析

    一.HashMap(JDK1.8) 1.基本知识.数据结构 (1)时间复杂度:用来衡量算法的运行时间. 参考:https://blog.csdn.net/qq_41523096/article/det ...

  10. 浏览器console控制台不显示编译错误/警告

    浏览器正常显示报错应该是这样的 ,但是我一不小心右键给Hide message from...了,红色报错字体就没了,解决方法如下: 直接将红色框内的内容叉掉,恢复成filter就OK了