1. 程式人生 > >BZOJ 4276: [ONTAK2015]Bajtman i Okr?g?y Robin

BZOJ 4276: [ONTAK2015]Bajtman i Okr?g?y Robin

eof nta class its truct namespace 排序 clu space

最大權值匹配,貪心匈牙利即可。

檢查一些人是否能被全部抓住可以采用左端點排序,右端點優先隊列處理。

By:大奕哥

#include<bits/stdc++.h>
using namespace std;
const int N=5005;
struct node{
    int l,r,c;
    bool operator <(const node &b)const{
        return c>b.c;
    }
}p[N];
int match[N],ans,n;
bool v[N];
bool Hungary(int
x) { for(int i=p[x].l;i<=p[x].r;++i) { if(!v[i]) { v[i]=1; if(!match[i]||Hungary(match[i])) { match[i]=x; return 1; } } } return 0; } int main() { // freopen("1.out","r",stdin);
// freopen("my.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%d%d%d",&p[i].l,&p[i].r,&p[i].c); p[i].r--; } sort(p+1,p+1+n); for(int i=1;i<=n;++i) { memset(v,0,sizeof(v)); if(Hungary(i))ans+=p[i].c; } printf(
"%d\n",ans); return 0; }

BZOJ 4276: [ONTAK2015]Bajtman i Okr?g?y Robin