脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量z[i]=(ai,1,ai,2,..,ai,m)z[i]=(ai,1,ai,2,..,ai,m) 表示,每个装备需要花费 cici。

现在脸哥想买一些装备,但是脸哥很穷,所以总是盘算着怎样才能花尽量少的钱买尽量多的装备。

对于脸哥来说,如果一件装备的属性能用购买的其他装备组合出(也就是说脸哥可以利用手上的这些装备组合出这件装备的效果),那么这件装备就没有买的必要了。

严格的定义是,如果脸哥买了 z[i1],z[i2],…,z[ip]z[i1],z[i2],…,z[ip]这 p 件装备,并且不存在实数 b1,b2,…,bpb1,b2,…,bp 使得z[k]=b1z[i1]+b2z[i2]+…+bpz[ip]z[k]=b1z[i1]+b2z[i2]+…+bpz[ip],那么脸哥就会买z[k]z[k],否则 z[k]z[k]对脸哥就是无用的了,自然不必购买。

脸哥想要在买下最多数量的装备的情况下花最少的钱,你能帮他算一下吗?

输入格式

第一行包含两个整数 n和m。

接下来 n 行,每行 m 个数,其中第 i 行描述装备 i 的各项属性值。

接下来一行 n 个数,其中第i个数表示购买第 i 件装备的花费cici。

输出格式

输出占一行,包含两个整数,第一个整数表示能够购买的最多装备数量,第二个整数表示在购买最多数量的装备的情况下的最小花费。

数据范围

1≤n,m≤5001≤n,m≤500,
0≤ai,j≤10000≤ai,j≤1000

输入样例:

3 3
1 2 3
3 4 5
2 3 4
1 1 2

输出样例:

2 2

题意:给出n个向量,每个向量有m个属性,每个向量有个价值,我们现在求买最多的向量,但是花最少的钱,当然有个要求,如果其中一些变量能够由其他的拼凑出来而且价格比这低,那么就不用多次一举买这些变量
,满足这要求求最优的答案 思路:
这里讲一个概念 线性空间
其中有很多变量,如果有些变量可以被其他变量凑出来,通过向量间的加法,和数量积之和得来,那么就是线性相关,否则就是线性无关,
求最大的线性无关组,我们可以用高斯消元,如果一行都被化简成0,说明这个可以被其他凑出来,那么就不需要买,也就是矩阵的秩
这里还有个问题就是要用最少的钱,我们只需要找最大元的时候找出满足要求且最低的价格的那一个即可
#include<bits/stdc++.h>
#define maxn 100005
#define mod 1000000007
#define eps 1e-8
using namespace std;
typedef long long ll;
ll n,m;
long double a[][];
long double c[];
int main(){
cin>>n>>m;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
double temp;
cin>>temp;
a[i][j]=temp;
}
}
for(int i=;i<=n;i++){
double temp;
cin>>temp;
c[i]=temp;
}
double sum=;
ll num=;
for(int i=;i<=n;i++){
int flag=;
for(int j=i;j<=n;j++){
if(fabs(a[j][i])>eps){
if(flag==||c[j]<c[flag])
{
flag=j;
}
}
}
/*if(fabs(a[i][i])<eps){
num=i-1;
break;
}*/
if(flag==) continue;
num++;
for(int k=;k<=m;k++){
swap(a[i][k],a[flag][k]);
}
swap(c[i],c[flag]);
sum+=c[i];
for(int j=;j<=n;j++){
if(i==j||fabs(a[j][i])<eps) continue;
long double state=a[j][i]/a[i][i];
for(int k=;k<=m;k++){
a[j][k]-=a[i][k]*state;
}
}
}
cout<<num<<" "<<sum;
} /*
3 3
1 2 3
3 4 5
2 3 4
1 1 2
*/
 

AcWing 209. 装备购买 (高斯消元线性空间)打卡的更多相关文章

  1. BZOJ 4004 JLOI2015 装备购买 高斯消元+线性基

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4004 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装 ...

  2. BZOJ 4004: [JLOI2015]装备购买 [高斯消元同余 线性基]

    和前两(一)题一样,不过不是异或方程组了..... 然后bzoj的新数据是用来卡精度的吧..... 所有只好在模意义下做啦 只是巨慢无比 #include <iostream> #incl ...

  3. BZOJ 4004: [JLOI2015]装备购买 高斯消元解线性基

    BZOJ严重卡精,要加 $long$  $double$ 才能过. 题意:求权和最小的极大线性无关组. 之前那个方法解的线性基都是基于二进制拆位的,这次不行,现在要求一个适用范围更广的方法. 考虑贪心 ...

  4. AcWing 207. 球形空间产生器 (高斯消元)打卡

    有一个球形空间产生器能够在n维空间中产生一个坚硬的球体. 现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁这个球形空间产生器. ...

  5. AcWing 227. 小部件厂 (高斯消元)打卡

    题目:https://www.acwing.com/problem/content/description/229/ 题意:有很多个零件,每个零件的生产时间都在3-9天之间,现在只知道每个工人的生产部 ...

  6. HDU2449 Gauss Elimination 高斯消元 高精度 (C++ AC代码)

    原文链接https://www.cnblogs.com/zhouzhendong/p/HDU2449.html 题目传送门 - HDU2449 题意 高精度高斯消元. 输入 $n$ 个 $n$ 元方程 ...

  7. [JLOI2015]装备购买 (高斯消元)

    [JLOI2015]装备购买 \(solution:\) 首先这道题的题面已经非常清晰的告诉我们这就是线性空间高斯消元的一道题(可以用某些装备来表示另一件装备,这已经不能再明显了),只是这道题要求我们 ...

  8. 【BZOJ4004】[JLOI2015]装备购买 贪心+高斯消元

    [BZOJ4004][JLOI2015]装备购买 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 ( ...

  9. 【bzoj4004】[JLOI2015]装备购买 贪心+高斯消元求线性基

    题目描述 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 (1 <= i <= n; 1 <= j < ...

随机推荐

  1. jQuery积累:serialize()、stringify()、toJSON()

    *)表单serialize()序列化,和serializeArray() ##)应用场景 当Ajax或者get请求发送表单中的某一个,或者某几个值到后台时,通过jQuery就能获取到这些值.然后作为A ...

  2. python中split()函数的用法

    函数:split() Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(lis ...

  3. appium移动端自动化测试的一些感想

    花了一个多月的时间来复习,学习appium+python+android的UI层的自动化测试. 从最开始的环境搭建,都后面运行脚本报错各类错,到优化脚本结构,基本上问题不断. 相比,selenium做 ...

  4. vim中 E212:无法打开并写入文件 的解决办法

    因为centos7刚安装的时候是无法上网的,所以,需要去配置一下ifcfg-ens33文件,但实际上这个文件是只读的文件,root也无法去更改内容,这时候保存的时候需要使用 w ! sudo tee ...

  5. 【C#学习笔记】 IDisposable 接口

    在.net 编程环境中,系统的资源分为托管资源和非托管资源. 对于托管的资源的回收工作,是不需要人工干预回收的,而且你也无法干预他们的回收,所能够做的只是了解.net CLR如何做这些操作.也就是说对 ...

  6. php Connection timed out after 30000 milliseconds

    function HttpRequest($url, $params, $method = 'GET', $header = array(), $bEncode = true){ $opts = ar ...

  7. BZOJ 4003 (可并堆)

    题面 小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池. 这 n 个城池用 1 到 n 的整数表示.除 1 号城池外,城池 i 会受到另一座城池 fi 的管辖, 其中 fi &l ...

  8. TP框架的模板路径问题以及常用的模板常量的定义

    在TP框架中,为了各个模块加载静态文件方便,往往是不需要按照默认的方式放置静态文件到/app/模块名/VIEWS/下面,而是在顶级目录下创建一个新的目录(比如说./tpl目录下),来存放静态文件   ...

  9. Oracle学习笔记<4>

    多表查询 1.什么是多表查询? 一次select语句需要查询的内容来自于不止一张表. 同时从多张表中查询数据. 单表查询: select id,last_name,salary from s_emp ...

  10. K8S入门系列之必备扩展组件--> coredns(四)

    摘要: 集群其他组件全部完成后我们应当部署集群 DNS 使 service 等能够正常解析,1.11版本coredns已经取代kube-dns成为集群默认dns. https://github.com ...