本文共 2098 字,大约阅读时间需要 6 分钟。
拟阵。
好吧,表示完全不会。
还是先膜拜一下大神吧
把每个装备看成一个M维向量。
集合S={向量1,向量2,向量3,...,向量N}
集合L={x|x是S子集且x中的向量线性无关}
tip:
相关,就是在一组数据中有一个或者多个量可以被其余量表示。
遗传性:
显然。
交换性:
对于任意的向量集合A,B∈L,|A|<|B|。
因为B中向量个数比A中向量个数多,
所以必定存在某个向量x∈B,使得{x}∪A仍然线性无关,即{x}∪A∈L
所以满足交换性。
我们按费用从小到大排序
每次看看当前向量是否和已选向量线性无关
这个可以用高斯消元。
其实大神都是一眼秒了的。。。去了皮的大土豆~OTATO~
友情题:
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include 适用于CF,UOJ,但不适用于poj using namespace std;typedef long long LL;typedef double DB;typedef pair PII;typedef complex CP;#define mmst(a,v) memset(a,v,sizeof(a))#define mmcy(a,b) memcpy(a,b,sizeof(a))#define fill(a,l,r,v) fill(a+l,a+r+1,v)#define re(i,a,b) for(i=(a);i<=(b);i++)#define red(i,a,b) for(i=(a);i>=(b);i--)#define ire(i,x) for(typedef(x.begin()) i=x.begin();i!=x.end();i++)#define fi first#define se second#define m_p(a,b) make_pair(a,b)#define p_b(a) push_back(a)#define SF scanf#define PF printf#define two(k) (1<<(k))template inline T sqr(T x){ return x*x;}template inline void upmin(T &t,T tmp){ if(t>tmp)t=tmp;}template inline void upmax(T &t,T tmp){ if(t 0)?1:-1;}const DB Pi=acos(-1.0);inline int gint() { int res=0;bool neg=0;char z; for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar()); if(z==EOF)return 0; if(z=='-'){neg=1;z=getchar();} for(;z!=EOF && isdigit(z);res=res*10+z-'0',z=getchar()); return (neg)?-res:res; }inline LL gll() { LL res=0;bool neg=0;char z; for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar()); if(z==EOF)return 0; if(z=='-'){neg=1;z=getchar();} for(;z!=EOF && isdigit(z);res=res*10+z-'0',z=getchar()); return (neg)?-res:res; }const int maxN=500;const int maxM=500;int N,M;int ans1,ans2;struct Ta { DB v[maxM+10]; int cost; inline DB& operator [] (int i){ return v[i];} }a[maxN+10];inline bool cmpcost(Ta a,Ta b){ return a.cost
转载于:https://www.cnblogs.com/maijing/p/4755202.html