zoukankan      html  css  js  c++  java
  • 题解 装备购买

    题目传送门

    题目大意

    给出(n)(m)维向量,每个向量有一个权值。求选出最大的一个向量集,使得权值之和最小,并且里面所有向量都不能通过其他一些向量乘上某个系数加起来得到。

    思路

    话说这种东西居然还有人叫它实数线性基???这又是哪个民科叫法???明明就是一个高斯消元嘛(雾

    其实很简单,我们直接按高斯消元的套路来,如果某一位无法被消掉,那我们肯定就要了,否则就直接消掉,因为反正消不掉还是消不掉,消得掉还是消得掉。它既然要权值最小,那我们直接按权值从小到大排就好了。

    ( ext {Code})

    #include <bits/stdc++.h>
    using namespace std;
    
    #define Int register int
    #define MAXN 505
    #define eps 1e-6
    
    template <typename T> inline void read (T &t){t = 0;char c = getchar();int f = 1;while (c < '0' || c > '9'){if (c == '-') f = -f;c = getchar();}while (c >= '0' && c <= '9'){t = (t << 3) + (t << 1) + c - '0';c = getchar();} t *= f;}
    template <typename T,typename ... Args> inline void read (T &t,Args&... args){read (t);read (args...);}
    template <typename T> inline void write (T x){if (x < 0){x = -x;putchar ('-');}if (x > 9) write (x / 10);putchar (x % 10 + '0');}
    
    int n,m,p[MAXN];
    
    struct AK47{
    	int cost;double x[MAXN];
    	bool operator < (const AK47 &p)const{return cost < p.cost;}
    }arms[MAXN];
    
    signed main(){
    	read (n,m);
    	for (Int i = 1;i <= n;++ i) for (Int j = 1;j <= m;++ j) scanf ("%lf",&arms[i].x[j]);
    	for (Int i = 1;i <= n;++ i) read (arms[i].cost);
    	sort (arms + 1,arms + n + 1);int cnt = 0,ans = 0;
    	for (Int i = 1;i <= n;++ i)
    		for (Int j = 1;j <= m;++ j){
    			if (fabs (arms[i].x[j]) > eps){
    				if (!p[j]){
    					p[j] = i,cnt ++,ans += arms[i].cost;
    					break;
    				}
    				double t = arms[i].x[j] / arms[p[j]].x[j];
    				for (Int k = j;k <= m;++ k) arms[i].x[k] -= arms[p[j]].x[k] * t;
    			}
    		}
    	write (cnt),putchar (' '),write (ans),putchar ('
    ');
    	return 0;
    }
    
    
  • 相关阅读:
    f5和ctrl+f5之浏览器缓存机制
    一次简单的http请求会碰撞出什么火花
    javascript的数据类型
    javascript语法规范
    javascript(ECMAScript)
    overflow:hidden可以将页面溢出内容隐藏起来
    抽屉新热榜头部实现
    数据分析
    抽屉页面设计
    position(relative)
  • 原文地址:https://www.cnblogs.com/Dark-Romance/p/13324589.html
Copyright © 2011-2022 走看看