HLG 1916 小Z的卡片 (set 难题)恏似系亚洲区噶题

链接: http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1916

Description:

小w和小z想到了一个新游戏,在这个游戏中他们各有N个卡片。小w想去使用她的卡片去覆盖小z的卡片。

卡片A能覆盖卡片B的条件是卡片A的高不小于卡片B的高同时卡片A的宽不小于卡片B的宽。

现在请计算出小w的牌最多能覆盖小z的牌的数量。注意牌只能被使用一次,并且牌不能被旋转。

Input:

第一行是一个整数t代表测试数据组数。

对于每组测试数据第一行是一个整数n(n<=100000)代表卡片数量。

接下来n行每行两个整数h(h<=1000000000)和w(w<=1000000000)代表小w的卡片的高和宽。

在接下来n行每行两个整数h(h<=1000000000)和w(w<=1000000000)代表小z的卡片的高和宽。

Output:

对于每组测试数据,输出小w的牌最多能覆盖小z的牌的数量。

Sample Input:

2

2

1 2

3 4

2 3

4 5

3

2 3

5 7

6 8

4 1

2 5

3 4

Sample Output:

1

2

听几个亚洲区得过奖的师兄说,这是一道亚洲区的题目,记得当时自己刚看到这道题的时候,还是不好下手,过了不知道多久,然后再拿出来看了一下,A了,,嘻嘻,,还是挺难的这道题,方法确实很难想到,这道题过的人只有几个。。。还是挺不容易的说真的。。。

其实看我代码你就会知道这道题大概的想法,,代码写的比较容易。。。如果还是没看懂,,那私聊。。。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <set>
#include <algorithm>
#define MAXN 200000+10
using namespace std;

typedef struct Node_
{
    int x, y;
    int flag;
}Node;

Node N[MAXN];
int n, cas;
multiset <int> s;
multiset <int> :: iterator it;

void Init()
{
    scanf("%d", &n);
    for(int i=0; i<2*n; i++) {
        scanf("%d %d", &N[i].x, &N[i].y);
        if(i < n) N[i].flag = 0;
        else N[i].flag = 1;
    }
    s.clear();
}

bool cmp(const Node a, const Node b)
{
    if(a.x != b.x) return a.x < b.x;
    else if(a.y != b.y) return a.y < b.y;
    else return a.flag > b.flag;
}

int main()
{
    scanf("%d", &cas);
    while(cas--) {
        Init();
        int cnt = 0;
        sort(N, N+(2*n), cmp);
        for(int i=0; i<2*n; i++) {
            if(N[i].flag == 1) s.insert(N[i].y);
            else if(!s.empty()) {
                if(*s.begin() <= N[i].y) {
                    it = s.upper_bound(N[i].y);
                    it--;
                    cnt++;
                    s.erase(it);
                }
            }
        }
        printf("%d\n", cnt);
    }
    return 0;
}

HLG 1916 小Z的卡片 (set 难题)恏似系亚洲区噶题,布布扣,bubuko.com

时间: 2024-10-13 15:06:41

HLG 1916 小Z的卡片 (set 难题)恏似系亚洲区噶题的相关文章

小z的卡片

小z的卡片 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 56(18 users) Total Accepted: 15(12 users) Rating: Special Judge: No Description 小w和小z想到了一个新游戏,在这个游戏中他们各有N个卡片.小w想去使用她的卡片去覆盖小z的卡片. 卡片A能覆盖卡片B的条件是卡片A的高不小于卡片B的高同时卡片A的宽不小于卡片B的宽. 现在请计算出小w的牌最多能覆盖小

[高精度][数学] Jzoj P3771 小Z的烦恼

Description 小 Z 最近遇上了大麻烦,他的数学分析挂科了.于是他只好找数分老师求情. 善良的数分老师答应不挂他,但是要求小 Z 帮助他一起解决一个难题问题是这样的,现在有 n 个标号为 1-n 的球和 m 个盒子,每个球都可以放进且只能放进一个盒子里面,但是要满足如下的规则: 1.  若把标号为 i 的球放进了第 j 个盒子,那么标号为 2*i 的球一定要在第 j+1 个盒子里面(若 j<m) 2.  若把标号为 i 的球放进了第 j 个盒子,并且 k*2=i,那么标号为 k 的球一

[结论][高精度除法]JZOJ 3771 小Z的烦恼

Description 小 Z 最近遇上了大麻烦,他的数学分析挂科了.于是他只好找数分老师求情. 善良的数分老师答应不挂他,但是要求小 Z 帮助他一起解决一个难题问题是这样的,现在有 n 个标号为 1-n 的球和 m 个盒子,每个球都可以放进且只能放进一个盒子里面,但是要满足如下的规则: 1.  若把标号为 i 的球放进了第 j 个盒子,那么标号为 2*i 的球一定要在第 j+1 个盒子里面(若 j<m) 2.  若把标号为 i 的球放进了第 j 个盒子,并且 k*2=i,那么标号为 k 的球一

bzoj 2038 小Z的袜子(hose)(莫队算法)

2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 11542  Solved: 5166[Submit][Status][Discuss] Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命--具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两

[国家集训队2010]小Z的袜子

★★★   输入文件:hose.in   输出文件:hose.out   简单对比 时间限制:1 s   内存限制:512 MB [题目描述] 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬. 你的任务便

BZOJ 2038: [2009国家集训队]小Z的袜子(hose)

2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7676  Solved: 3509[Submit][Status][Discuss] Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只

清橙A1206 小Z的袜子(莫队算法)

A1206. 小Z的袜子 时间限制:1.0s   内存限制:512.0MB 总提交次数:744   AC次数:210   平均分:44.44 将本题分享到: 查看未格式化的试题   提交   试题讨论 试题来源 2010中国国家集训队命题答辩 问题描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是

【BZOJ】2038: [2009国家集训队]小Z的袜子(hose)

[算法]莫队 [题解] BZOJ 2038 2009国家集训队 小Z的袜子(hose) 莫队算法 莫队--讲稿? 施工中--

【洛谷T4896】小Z爱划水

题目描述 小Z和其它机房同学都面临一个艰难的抉择,那就是 要不要划水? 每个人都有自己的一个意见,有的人想做题,有的人想划水. 当然,每个人只能选择一个事情做.如果一个人做的事情和他想做的不同,那么他会产生1不满意度. 更棘手的是,他们之间一些人是朋友,如果两人是朋友,但是他们做的事情不同,那么会有1不满意度产生. 小Z不想看到大家闹得不高兴,他想知道,不满意度最小能是多少? 输入输出格式 输入格式: 第一行两个数字n,m 分别表示有n个人和m对朋友关系 第二行n个0/1,1表示想做题,0表示想