1. 程式人生 > >hdu 4268 Alice and Bob(lower_bound+貪心)

hdu 4268 Alice and Bob(lower_bound+貪心)

題目連結:

解題思路:

題目大意:

Alice 和 Bob  分別有 n 張牌,每張牌有一個長(h)和一個寬(w),Bob把他的牌依次排一排,Alice用他的牌依次去覆蓋,求最多可以 覆蓋多少,覆蓋的條件是長和寬都要大於等於Bob的牌。

演算法思想:

對Alice 和Bob的牌都按 h 排序,然後對Alice的每張牌,在Bob的牌中找一個最大能覆蓋的 。也就是說首先滿足Alice的牌 h >= Bob的牌 h,然後找最大 w。在查詢最大的w時,可

以使用multiset中的lower_bound函式。multiset動態插入每次只插入滿足Alice的牌 h >= Bob的牌 h 的牌。


AC程式碼:

#include <iostream>
#include <cstdio>
#include <set>
#include <algorithm>
using namespace std;

struct node{
    int h,w;
    bool operator < (const node &a)const{
        return h < a.h;
    }
};
node Alice[100005],Bob[100005];

int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        int n;
        scanf("%d",&n);
        for(int i = 0; i < n; i++)
            scanf("%d%d",&Alice[i].h,&Alice[i].w);
        for(int i = 0; i < n; i++)
            scanf("%d%d",&Bob[i].h,&Bob[i].w);
        sort(Alice,Alice+n);
        sort(Bob,Bob+n);
        int tmp = 0,ans = 0;
        multiset<int> s;
        for(int i = 0; i < n; i++){
            while(tmp < n && Bob[tmp].h <= Alice[i].h)
                s.insert(Bob[tmp++].w);
            multiset<int>::iterator it = s.lower_bound(Alice[i].w);
            if(!s.empty() && it != s.begin())
                it--;
            if(!s.empty() && (*it) <= Alice[i].w){
                s.erase(it);
                ans++;
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}


相關推薦

hdu 4268 Alice and Boblower_bound+貪心

題目連結: 解題思路: 題目大意: Alice 和 Bob  分別有 n 張牌,每張牌有一個長(h)和一個寬(w),Bob把他的牌依次排一排,Alice用他的牌依次去覆蓋,求最多可以 覆蓋多少,覆蓋

HDU 4268 Alice and Bob貪心+STL

該題一開始我用multiset寫了一發,寫的比較裸,TLE了 。 後來隊友想到了一個比較好的方法 :將兩個結構體排序之後,從大到小列舉Alice的h,對於每個h,將Bob中滿足h小於當前h的牌的w加進multiset,然後用二分函式查詢一下大於等於當前w的第一個數,當前迭代

HDU 5054 Alice and Bob數學

esp contain before mod see min roc axis factor 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=5054 Problem Description Bob and A

HDU 4268-Alice and Bob( STL: set)

題意: 要求找出 Alice 的卡片覆蓋 Box的卡片的最大張數, 長和寬都大於等於另一張卡片則能夠覆蓋.. 思路:  貪心思想+STL           一開始想到的是賽馬問題, 從最大的開始比, WA 了, 問了下靜姐才明白, 不能從最大比, 而應該從最小比, 因為

hdu(1069)——Monkey and BananaLIS變形

res 排序 inf popu 坐標 trac 保存 i++ urn 題意: 如今給你n個石塊,然後它由坐標來表示(x,y,z)。可是它能夠有不同的方法,也就是說它的三個坐標能夠輪換著來的。 石塊的數量不限,可是每次都必須保持上底面的長和寬嚴格遞減,然後問你用這些石塊所

【POJ】1704 Georgia and BobStaircase Nim

row over diff 題目 player 技術分享 需要 ber 排序。 Description Georgia and Bob decide to play a self-invented game. They draw a row of grids on pape

POJ 1704 Georgia and Bob階梯博弈題解

n-2 有一個 n-1 seed class ++ article scanf clas 題意:有一個一維棋盤,有格子標號1,2,3,......有n個棋子放在一些格子上,兩人博弈,只能將棋子向左移,不能和其他棋子重疊,也不能跨越其他棋子,不能超越邊界,不能走的人輸 思路:

HDU 6446 Tree and Permutation 思路+dp

題意 給你n個點,n-1條邊的一棵樹,現在有一個從 (1...n) ( 1... n )

HDU 6446 Tree and Permutation根節點

這道題我記得當時是在網上找的板子。。。。 http://acm.hdu.edu.cn/showproblem.php?pid=6446 先定義一個數n,n個數有n!種排列方法,然後求兩條邊的權值之和,顯然他是有(n-1)!2種結果,對於兩個相鄰的點來說,他的計算的次數其實是兩個邊的節點所形成

HDU-4015:Mario and Mushrooms找規律

Mario and Mushrooms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Othe

HDU 6064 RXD and numbersBEST theorem

RXD and numbers Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 40

HDU 3979 Monster中等貪心

這道題思考了一個小時,參考過程式碼,,,認真整理了思路,,本題的題意大致如下:一個遊俠和多個怪獸決鬥,怎麼樣擊殺怪獸會使遊俠的耗血最少。這其中的關鍵是怪獸不會一個一個的跟你打,他們也不傻,他們對你群毆,在這裡給大家舉個例子假如有兩個怪獸A和B,A怪獸的血量為HP

hdu 6318 Swaps and Inversions歸併排序

Swaps and Inversions Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1212    Acc

Alice and Bob HDU - 4111 SG函數

想要 scan pla using mem 進行 span pri gif Alice and Bob are very smart guys and they like to play all kinds of games in their spare time. The

[TJOI2014]Alice and Bob[拓撲排序+貪心]

pen arrow 如果 pri 說我 getc ret get bool 題意 給出一個序列的以每一項結尾的 \(LIS\) 的長度a[],求一個序列,使得以每一項為開頭的最長下降子序列的長度之和最大。 \(n\leq 10^5\) 。 分析 最優解一定是一個排列,因為

洛谷3971 BZOJ5158 TJOI2014 Alice and Bob 構造 貪心 拓撲排序 dp 堆

題目連結 題意: 給你一個a陣列,a中的每一個元素表示以該元素開頭的在陣列x中的最長上升子序列長度,要你自己構造x陣列,使得對x陣列求最長下降子序列後每個位置開始的最長下降子序列長度之和最大。n<=1e5,保證a可以用過一個

HDU 6438 Buy and Resell貪心+優先佇列+set

Description 有nnn個城市,第iii個城市商品價格為aia_iai​,從111城市出發依次經過這nnn個城市到達nnn城市,在每個城市可以把手頭商品出售也可以至多買一個商品,問最大收益以及在

新生賽問題 B: Alice and Bob

題目描述 Alice and Bob decide to play a game. At the beginning of the game they put n piles of sweets on the table.The number of each pile of sweets m

HDU4268 Alice and Bob貪心+SET】

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4719    Accepted Submission(s)

湘潭邀請賽——Alice and Bob

indicate pro scan printf turn name pap 100% %d Alice and Bob Accepted : 133 Submit : 268 Time Limit : 1000 MS Memory Lim