我真的越来越懒了,今天补了好多天的。
贴,贴,贴链接。
匈牙利算法求二分图最大匹配:
https://blog.csdn.net/cillyb/article/details/55511666
https://www.cnblogs.com/shenben/p/5573788.html
这个算法真的是,每个人跟每个人就是的都不一样,但是不管细节怎么写,整体思路是相似的,选了个我看得懂的,贴;
这天Question_A真的难写,真的长,但挺经典的,限制顶点度数的MST。:我就要贴题解。
还有还有:01规划
Question_B:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int NMAX=1008;
int n,k;
double num[NMAX];
typedef struct D{
int a,b;
}Data;
Data data[NMAX];
bool compare(double a,double b){
return a>=b;
}
bool check(double x){ //这这
double sum=0;
for(int i=0;i<n;i++)
num[i]=data[i].a-data[i].b*x;
sort(num,num+n,compare);
for(int i=0;i<n-k;i++)
sum+=num[i];
return sum>0?true:false;
}
int main(){
while(~scanf("%d%d",&n,&k)&&(n+k)!=0){
double r=0;
for(int i=0;i<n;i++)
scanf("%d",&data[i].a);
for(int i=0;i<n;i++){
scanf("%d",&data[i].b);
r=max(r,data[i].a*1.0/data[i].b);
}
double l=0;
double mid;
for(int i=0;i<100;i++){ //
mid=(l+r)/2; //01规划
if(check(mid)) //算法
l=mid; //核心
else //部分
r=mid; //
}
printf("%0.lf\n",mid*100);
}
}