AcWing 209. 装备购买 (高斯消元线性空间)打卡
脸哥最近在玩一款神奇的游戏,这个游戏里有 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. 装备购买 (高斯消元线性空间)打卡的更多相关文章
- BZOJ 4004 JLOI2015 装备购买 高斯消元+线性基
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4004 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装 ...
- BZOJ 4004: [JLOI2015]装备购买 [高斯消元同余 线性基]
和前两(一)题一样,不过不是异或方程组了..... 然后bzoj的新数据是用来卡精度的吧..... 所有只好在模意义下做啦 只是巨慢无比 #include <iostream> #incl ...
- BZOJ 4004: [JLOI2015]装备购买 高斯消元解线性基
BZOJ严重卡精,要加 $long$ $double$ 才能过. 题意:求权和最小的极大线性无关组. 之前那个方法解的线性基都是基于二进制拆位的,这次不行,现在要求一个适用范围更广的方法. 考虑贪心 ...
- AcWing 207. 球形空间产生器 (高斯消元)打卡
有一个球形空间产生器能够在n维空间中产生一个坚硬的球体. 现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁这个球形空间产生器. ...
- AcWing 227. 小部件厂 (高斯消元)打卡
题目:https://www.acwing.com/problem/content/description/229/ 题意:有很多个零件,每个零件的生产时间都在3-9天之间,现在只知道每个工人的生产部 ...
- HDU2449 Gauss Elimination 高斯消元 高精度 (C++ AC代码)
原文链接https://www.cnblogs.com/zhouzhendong/p/HDU2449.html 题目传送门 - HDU2449 题意 高精度高斯消元. 输入 $n$ 个 $n$ 元方程 ...
- [JLOI2015]装备购买 (高斯消元)
[JLOI2015]装备购买 \(solution:\) 首先这道题的题面已经非常清晰的告诉我们这就是线性空间高斯消元的一道题(可以用某些装备来表示另一件装备,这已经不能再明显了),只是这道题要求我们 ...
- 【BZOJ4004】[JLOI2015]装备购买 贪心+高斯消元
[BZOJ4004][JLOI2015]装备购买 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 ( ...
- 【bzoj4004】[JLOI2015]装备购买 贪心+高斯消元求线性基
题目描述 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 (1 <= i <= n; 1 <= j < ...
随机推荐
- VS2010MFC编程入门
一.MFC编程入门教程之目录 第1部分:MFC编程入门教程之目录 1.MFC编程入门之前言 鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的 ...
- Oracle or Question Solve(二)
数据库常用语句和函数 ----update update()函数主要注意的是后面的where限制条件--例子:update tab_a a set a.v1 = (select b.v1 from t ...
- 【前端技术】一篇文章搞掂:微信小程序
实战: 1.[openId]获取openId 有如下几种方法: 通过wx.login()获取临时登录凭证 code,然后通过code2session获取openId wx.login():https: ...
- Chrome-逆向分析JS-1分析google网站翻译器原文存放位置
剧透:就是使用了一下 Chrome DevTools 的 Memory 功能,通过已知的 JS 变量的值查找 JS 内存中变量的引用 # 一:不分析一下现有的网页翻译方法么? 总所周知,(As is ...
- sql查询某个时间内的数据
hour) 七天之前的数据 SELECT * FROM commodity_order where create_time <= (now()-INTERVAL 7 DAY) order by ...
- Hibernate注解详解(超全面不解释)
原博客地址:http://blog.csdn.net/sufei58/article/details/48223731 我只是收藏来方便自己查阅的,希望博主不要介意 一.实体Bean 每个持久化POJ ...
- Python笔记(一)_基础
数据类型和转换 整型.浮点型.字符串.布尔值 int() 整型转换 float() 浮点型转换 str() 字符串转换 运算符.操作符 算术运算符:+ - * / % // ** 赋值运算 ...
- springboot 尚桂谷学习笔记03
------spring boot 与日志------ 日志框架: 市面上的日志框架: jul jcl jboss-logging logback log4j log4j2 ...... 左边一个门面 ...
- matplotlib系列——折线图
import numpy as np import matplotlib.pyplot as plt import matplotlib #数据准备 #numpy.linspace(start, st ...
- UVA 12672 Eleven(DP)
12672 - Eleven Time limit: 5.000 seconds In this problem, we refer to the digits of a positive integ ...