1. 程式人生 > >HDU 3729 二分圖匹配

HDU 3729 二分圖匹配

題意:每個學生說自己的排名在一個區間,然後老師想知道說真話的學生最多是多少,並將說實話的學生按字典序最大輸出

思路:簡單的匈牙利二分圖匹配,因為需要字典序最大,所以在匹配的時候要先滿足人的序號大的先匹配

#include <vector>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf=0x3f3f3f3f;
const ll INF=0x3f3f3f3f3f3f3f3fll;
const int maxn=100010;
int match[maxn];
vector<int>G[70];
int used[maxn],vis[70];
bool dfs(int v){
    for(unsigned int i=0;i<G[v].size();i++){
        int u=G[v][i];
        if(used[u]==-1){
            used[u]=1;
            if(match[u]==-1||dfs(match[u])){
                match[u]=v;
                vis[v]=u;
                return 1;
            }
        }
    }
    return 0;
}
int slove(int n){
    int res=0;
    memset(match,-1,sizeof(match));
    for(int v=n;v>=1;v--){
        memset(used,-1,sizeof(used));
        if(dfs(v)) res++;
    }
    return res;
}
int main(){
    int T,n,a,b;
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        for(int i=0;i<=n;i++) G[i].clear(),vis[i]=0;
        for(int i=1;i<=n;i++){
            scanf("%d%d",&a,&b);
            for(int j=a;j<=b;j++) G[i].push_back(j);
        }
        int ans=slove(n);
        printf("%d\n",ans);
        for(int i=1;i<=n;i++){
            if(vis[i]){
                if(ans==1) printf("%d\n",i);
                else printf("%d ",i);
                ans--;
            }
        }
    }
    return 0;
}

相關推薦

HDU 3729 二分匹配

題意:每個學生說自己的排名在一個區間,然後老師想知道說真話的學生最多是多少,並將說實話的學生按字典序最大輸出 思路:簡單的匈牙利二分圖匹配,因為需要字典序最大,所以在匹配的時候要先滿足人的序號大的先

過山車 HDU 2063 (二分匹配裸題)

onos rpg main algo col maps 而且 dfs out Problem Description RPG girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個

Land of Farms HDU - 5556 二分匹配

Farmer John and his brothers have found a new land. They are so excited and decide to build new farms on the land. The land is a rectangle and consists o

Girls and Boys HDU - 1068 二分匹配(匈牙利)+最大獨立集證明

最大獨立集證明參考:https://blog.csdn.net/qq_34564984/article/details/52778763 最大獨立集證明:         上圖,我們用兩個紅色的點覆蓋了所有邊。我們證明的前提條件是已經達到最小覆蓋。 即條件

Girls and Boys HDU - 1068 二分匹配(匈牙利)+最大獨立集證明

fin include while ++ .net 覆蓋數 article c++ 無法 最大獨立集證明參考:https://blog.csdn.net/qq_34564984/article/details/52778763 最大獨立集證明: 上圖,我們用

hdu 2444 二分匹配

#include<cstdio> #include<cstring> using namespace std; int G[220][220],vis[220],n,m,mat

hdu 3861 The King’s Problem trajan縮點+二分匹配

acm ant 二分 scanf title atan size pair city The King’s Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768

HDU 5727 Necklace(全排列+二分匹配

color algorithm target () mark ++ int turn open http://acm.split.hdu.edu.cn/showproblem.php?pid=5727 題意:現在有n個陽珠子和n個陰珠子,現在要把它們串成項鏈,要求是陰陽珠

HDU 2236 無題II(二分匹配+二分

cto family view itl trac note 二分 cli 鏈接 HDU 2236 無題II 題目鏈接 思路:行列僅僅能一個,想到二分圖,然後二

HDU 5727 Necklace ( 2016多校、二分匹配 )

tin 進行 clas open cond c++ sin 多校 %d 題目鏈接 題意 : 給出 2*N 顆珠子、有 N 顆是陰的、有 N 顆是陽的、現在要把陰陽珠子串成一個環狀的項鏈、而且要求珠子的放置方式必須的陰陽相間的、然後給出你 M 個限制關系、格式為 ( A、B

HDU 1669 二分多重匹配+二分

output rst more div hang title cep -a () Jamie‘s Contact Groups Time Limit: 15000/7000 MS (Java/Others) Memory Limit: 65535/65535 K (J

HDU 2255 二分最佳匹配

code sizeof content debug fas 地方 bits lin div 奔小康賺大錢 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T

HDU 3609 二分多重匹配

Escape Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 13005   

hdu 1045 Fire Net 【二分匹配

進行 col numbers res clu 意思 archive 多少 color <題目鏈接> <轉載於 >>> > 題目大意: 這題意思是給出一張圖,圖中‘X‘表示wall,‘.‘表示空地,可以放置炮臺,同一條直線上只

HDU ~ 4685 ~ Prince and Princess (二分匹配(網路流) + 強連通縮點)

題意 T組測試資料,每組先輸入n,m表示有n個王子和m個公主,接下來n行,每行先輸入k表示,第i個王子有K個喜歡的公主,然後輸入這k個公主的編號。每個王子只能和喜歡的妹子結婚,國王要求給他一個表,每個王子可以和幾個公主結婚,按序號升序輸出妹子的編號。這個表應滿足所有的王子最終都

HDU 3829 Cat VS Dog (最大獨立集)【二分匹配

<題目連結> 題目大意: 動物園有n條狗。m頭貓。p個小孩,每一個小孩有一個喜歡的動物和討厭的動物。如今動物園要轉移一些動物。假設一個小孩喜歡的動物在,不喜歡的動物不在,他就會happy。問動物最多能使幾個小孩happy。 解題分析: 因為本題不同的小孩之間喜好可能會產生衝突,所以,要使最

hdu 4685 Prince and Princess (二分匹配+tarjan)

There are n princes and m princesses. Princess can marry any prince. But prince can only marry the princess they DO love. For all princes,give all the

HDU 1045 Fire Net 【連通塊的壓縮 二分匹配

題目:http://acm.hdu.edu.cn/showproblem.php?pid=1045 Fire Net Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav

二分匹配HDU

題意: 給出一張圖,‘X’代表牆,‘.’ 代表空地。在空地上放一些炮塔,炮塔不能處在同一行同一列,除非被牆隔開。問最多能放多少個炮塔。 題解: 這題其實可以二進位制暴力模擬去做,但也可以用二分

hdu 5090 Game with Pearls 二分匹配

Problem Description Tom and Jerry are playing a game with tubes and pearls. The rule of the game is: Tom and Jerry come up togeth