不知道线性基是什么东西的可以看看蒟蒻的
不难看出题目讲的就是线性基
这种最小化权值的问题一般都是贪心的,就是按价值从低到高考虑每一个是否能选
据说贪心的证明得用拟阵我不会
据说这题是实数意义下的线性基我还是不会……据说得用高斯消元……
所以直接上代码好了……
1 //minamoto 2 #include3 #include 4 #include 5 #define N 505 6 #define eps 1e-6 7 #define double long double 8 #define ll long long 9 using namespace std;10 struct node{11 int cost;double b[N];12 inline bool operator <(const node &b)const13 { return cost eps){26 if(!p[j]){p[j]=i,++cnt,sum+=a[i].cost;break;}27 double t=a[i].b[j]/a[p[j]].b[j];28 for(int k=j;k<=m;++k)29 a[i].b[k]-=a[p[j]].b[k]*t;30 }31 printf("%d %d\n",cnt,sum);32 return 0;33 }