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


$ solution: $
首先这道题的题面已经非常清晰的告诉我们这就是线性空间高斯消元的一道题(可以用某些装备来表示另一件装备,这已经不能再明显了),只是这道题要求我们求出花费最小的方案,这个我们可以直接贪心,如果有多个装备可以匹配某一个属性,那么我们选价值最小的那一个(这个可以用线性空间的定义证明),价值大的尽量往后再选(选到最后剩下一些价格大的不买即可)
$ code: $
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#define ll long long
#define db double
#define inf 0x7fffffff
#define rg register int
using namespace std;
const db cha=1e-4;
struct su{
db a[505];
int v;
inline bool operator <(su y){return v<y.v;}
}g[505];
int n,m,tot,ans;
int b[505];
inline int qr(){
char ch;
while((ch=getchar())<'0'||ch>'9');
int res=ch^48;
while((ch=getchar())>='0'&&ch<='9')
res=res*10+(ch^48);
return res;
}
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
n=qr(); m=qr();
for(rg i=1;i<=n;++i)
for(rg j=1;j<=m;++j)
g[i].a[j]=qr();
for(rg i=1;i<=n;++i)
g[i].v=qr();
sort(g+1,g+n+1);
for(rg i=1;i<=n;++i){
for(rg j=1;j<=m;++j){
if(fabs(g[i].a[j])>cha){
if(!b[j]){
b[j]=i;++tot;
ans+=g[i].v;
break;
}else{
db d=g[i].a[j]/g[b[j]].a[j];
for(rg k=j;k<=m;++k)
g[i].a[k]-=g[b[j]].a[k]*d;
}
}
}
}printf("%d %d\n",tot,ans);
return 0;
}
[JLOI2015]装备购买 (高斯消元)的更多相关文章
- 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$ 才能过. 题意:求权和最小的极大线性无关组. 之前那个方法解的线性基都是基于二进制拆位的,这次不行,现在要求一个适用范围更广的方法. 考虑贪心 ...
- 【BZOJ4004】[JLOI2015]装备购买 贪心+高斯消元
[BZOJ4004][JLOI2015]装备购买 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 ( ...
- 【bzoj4004】[JLOI2015]装备购买 贪心+高斯消元求线性基
题目描述 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 (1 <= i <= n; 1 <= j < ...
- 【bzoj4004】【JLOI2015】装备购买 (线性基+高斯消元)
Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 (1 <= i <= n; 1 < ...
- P3265 [JLOI2015]装备购买(高斯消元+贪心,线性代数)
题意; 有n个装备,每个装备有m个属性,每件装备的价值为cost. 小哥,为了省钱,如果第j个装备的属性可以由其他准备组合而来.比如 每个装备属性表示为, b1, b2.......bm . 它可以由 ...
- 洛谷P3265 [JLOI2015]装备购买(线性基+高斯消元)
传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 不难看出题目讲的就是线性基 这种最小化权值的问题一般都是贪心的,就是按价值从低到高考虑每一个是否能选 据说贪心的证明得用拟阵我不会 据说这题是实数意 ...
- AcWing 209. 装备购买 (高斯消元线性空间)打卡
脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量z[i]=(ai,1,ai,2,..,ai,m)z[i]=(ai,1,ai,2,..,ai,m) 表示,每个装备需要 ...
随机推荐
- Java MD5Util
package util; import java.security.MessageDigest; public class MD5Util { public static String strin ...
- jdk1.8 HashMap的扩容resize()方法详解
/** * Initializes or doubles table size. If null, allocates in * accord with initial capacity target ...
- linux下拷贝文件夹的时候排除其中的一些目录
http://blog.csdn.net/wind19/article/details/8960574 使用find cd /usr find ./tmp/ | grep -v tmp/dirc | ...
- 封装caffe版的deeplab为库供第三方使用
1.解决deeplab编译问题 http://m.2cto.com/kf/201612/579545.html
- poj3061(尺取法)
---恢复内容开始--- 题目意思:给你一段非负序列,再给你一个值k,找出这段序列中最少的连续子序列使得和为k: 解题思路:因为都是正数,我们只需要找到一段区间不大于k,就停止,然后左边趋近看是否能得 ...
- [代码]--c#-实现局域网聊天
服务器端: using System; using System.Collections.Generic; using System.Linq; using System.Net; using Sys ...
- [IOI2018]排座位——线段树
题目链接: IOI2018seat 题目大意:给出一个$H*W$的矩阵,将$0 \sim W*H-1$分别填入矩阵的格子里(每个格子里一个数),定义一个子矩阵是美妙的当且仅当这个子矩阵包含且仅包含$0 ...
- Ajax中返回数据的格式
Ajax中常见的返回数据的格式有三种:分别为文本,XML和JSON 返回的文本格式我们在上一堂课Ajax基础介绍中已经介绍过了 Ajax.php Form.html:通过Ajax对象的response ...
- 打开SharePoint 2013 web application显示iis 欢迎页面
当我打开SP web application时,页面显示如下: 查看event log,发现有一些8315-8317之类的error,发现把request management service停掉后, ...
- 【ARC065E】??
Description 链接 Solution 问题其实就是从一个点出发,每次可以走与其曼哈顿距离恰好为一个常数\(d\)的点 显然不可能一一走完所有的边,这样复杂度下界至少是\(O(ans)\) 我 ...