Alice和Bob有n个长方形,有长度和宽度,一个矩形可以覆盖另一个矩形的条件的是,本身长度大于等于另一个矩形,且宽度大于等于另一个矩形,矩形不可旋转,问你Alice最多能覆盖Bob的几个矩形?

 /*
HDU 4268
贪心+STL
*/ #include<stdio.h>
#include<math.h>
#include<iostream>
#include<set>
#include<algorithm>
using namespace std;
const int MAXN=;
struct Node
{
int h,w;
int flag;
}node[MAXN];
bool cmp(Node a,Node b)
{
if(a.h!=b.h)return a.h<b.h;
else if(a.w!=b.w)return a.w<b.w;
else return a.flag>b.flag;
}
multiset<int>mt;
multiset<int>::iterator it;
int main()
{
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
int T;
int n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d%d",&node[i].h,&node[i].w);
node[i].flag=;
}
for(int i=n+;i<=*n;i++)
{
scanf("%d%d",&node[i].h,&node[i].w);
node[i].flag=;
}
sort(node+,node+*n+,cmp);
mt.clear();
/*for(int i=1;i<=2*n;i++)
{
printf("%d %d %d\n",node[i].h,node[i].w,node[i].flag);
}*/
int ans=;
for(int i=;i<=*n;i++) //1覆盖2
{
if(node[i].flag==)mt.insert(node[i].w);
else
{
if(!mt.empty())
{
it=mt.begin();
if(node[i].w>=(*it)) //multiset是升序排列的,每次begin是出来最小的值,这个值不一定最接近w,所以需要重新找
{
ans++;
it=mt.upper_bound(node[i].w);
it--;
mt.erase(it);
}
}
}
}
printf("%d\n",ans);
}
return ;
}

hdu 4268 multiset+贪心的更多相关文章

  1. HDU 4268 multiset

    http://acm.hust.edu.cn/vjudge/contest/123100#problem/B #include <iostream> #include <string ...

  2. Hdu 4864(Task 贪心)(Java实现)

    Hdu 4864(Task 贪心) 原题链接 题意:给定n台机器和m个任务,任务和机器都有工作时间值和工作等级值,一个机器只能执行一个任务,且执行任务的条件位机器的两个值都大于等于任务的值,每完成一个 ...

  3. D - 淡黄的长裙 HDU - 4221(贪心)

    D - 淡黄的长裙 HDU - 4221(贪心) James is almost mad! Currently, he was assigned a lot of works to do, so ma ...

  4. hdu 4268 Alice and Bob(贪心+multiset)

    题意:卡牌覆盖,每张卡牌有高(height)和宽(width).求alice的卡牌最多可以覆盖多少bob的卡牌 思路:贪心方法就是找h可以覆盖的条件下找w最大的去覆盖. #include<ios ...

  5. HDU 4268 Alice and Bob(贪心+Multiset的应用)

     题意: Alice和Bob有n个长方形,有长度和宽度,一个矩形能够覆盖还有一个矩形的条件的是,本身长度大于等于还有一个矩形,且宽度大于等于还有一个矩形.矩形不可旋转.问你Alice最多能覆盖Bo ...

  6. Alice and Bob(贪心HDU 4268)

    Alice and Bob Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

  7. hdu 4268 Alice and Bob(multiset|段树)

    Alice and Bob Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  8. 2017多校第10场 HDU 6180 Schedule 贪心,multiset

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6180 题意:给了一些任务的开始时间和终止时间,现在让我们安排k台及机器,让这些任务在k太机器上最小,并 ...

  9. hdu 4268 贪心+set lower_bound用法

    http://acm.hdu.edu.cn/showproblem.php?pid=4268 A想用手里的牌尽量多地覆盖掉B手中的牌.. 牌有h和w 问A手中的牌最多能覆盖B多少张牌 iterator ...

随机推荐

  1. linux进程调度之 FIFO 和 RR 调度策略

    转载 http://blog.chinaunix.net/uid-24774106-id-3379478.html    linux进程调度之 FIFO 和 RR 调度策略 2012-10-19 18 ...

  2. STL中算法

    sort 大数据量时,采用Quick Sort,分段递归排序: 小数据量时,采用Insert Sort. 如果迭代层次过深,会导致快排性能退化,这时采用Heap Sort排序. 快排pivot采用三点 ...

  3. Swift翻译之-Swift语法入门 Swift语法介绍

    目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...

  4. linux find 命令详解

    Linux下 利用find命令删除所有vssver2.scc文件 删除所有vssver2.scc文件 这是我当初查找 Linux find 命令的目的所在 1)  find / -name ‘vssv ...

  5. Linux(Ubuntu)下面SecureCRT 完全破解

    转载声明:本文来自http://www.boll.me/archives/680 相关说明: 上篇发了个Linux(Ubuntu) 下 SecureCRT 7 30天循环破解在启动的时候会多输入一次确 ...

  6. SVN 学习笔记

    命令参考 Api手册 清除用户密码 rm ~/.subversion/auth 撤销本地svn操作 svn revert 解决冲突 分支处理 拷贝分支 svn copy http://svn.exam ...

  7. Node.js 究竟是什么

    简而言之,Node.js是一个“编码就绪”服务器.Node是一个服务器端的JavaScript解释器,它将改变服务器如何工作的概念.是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同事连接到一 ...

  8. 关于vue.js 组件的调用

    包子初学vue.js,有很多不明白的地方还请大家多多指教,在组件的调用的时候,包子有点懵,因为感觉调用组件的方式非常的麻烦,每一个都要实例化,不过,通过不断询问大牛们,我找到了,动态加载组件的方法~~ ...

  9. More is better(MST)(求无向图中最大集合元素个数)

    More is better Time Limit:1000MS     Memory Limit:102400KB     64bit IO Format:%I64d & %I64u Sub ...

  10. sql分页查询语句

    有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活.先看看单条 SQL ...