BZOJ 4276: [ONTAK2015]Bajtman i Okr?g?y Robin
阿新 • • 發佈:2018-01-30
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(intx) { 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