hdu 3315 KM,優先選擇原來的匹配

2021-06-17 23:01:18 字數 1026 閱讀 9989

題意很明確,,就是乙個二分圖,求最優匹配,,蛋疼的是第二個要求,有多少個跟原來的匹配,就是優先選擇原來的匹配,跟hdu 2853一樣,將邊的權值擴大1000倍,原來的匹配邊+1,求得的值sum/1000就ok了,原來的匹配個數=sum%1000。。。。用費用流做效果不好,耗時太多

#include#include#includeconst int n=110;

const int inf=0x3fffffff;

using namespace std;

int map[n][n],lx[n],ly[n],sx[n],sy[n],d[n],n,match[n],tch[n];

struct node

p[100],r[100];

int find(int x)

}else d[i]=d[i]>temp?temp:d[i];

}return 0;

}int km()

}sum=0;

for(i=1;i<=n;i++)

sum+=map[match[i]][i];

if(sum<0)return -1;

return sum;

}int main()

map[i][i]+=1;

} y=km();

if(y==-1)printf("oh, i lose my dear seaco!\n");

else printf("%d %.3f%%\n",y/1000,(y%1000)*100.0/n);

}return 0;

}

hdu2255 KM演算法模板

題意 n個人選n個房子,每個人對每個房子分別有乙個出價。乙個人只能買乙個房子,求最大利潤。思路 帶權二分匹配問題,可以用最大費用流做,但是km演算法更高效。include using namespace std const int maxn 303 const int inf 0x3f3f3f3f ...

完美匹配 KM演算法 HDU總結

size medium kidx 的解題報告 img b size medium 首先獻上模板 size b define m 505 define inf 0x3fffffff bool sx m sy m int match m w m m n,m,d,lx m ly m n 左集元素個數 m ...

hdu1533 KM演算法逆向版

思路 原版km演算法求的是最大權值完美匹配,這題要求的是最小權值完美匹配,第一種思路,把邊取負,跑最大權值km演算法,得到的答案取負即可。include using namespace std const int maxn 103 const int inf 0x3f3f3f3f int w max...