Luogu 3265 [JLOI2015]装备购买
BZOJ 4004
把所有不能相互表示出来的向量都买下,一定能得到最大能买的方案数。
求解线性无关向量可以高斯消元,最后没有变成$0$向量的就是基底。
本题还要求代价最小怎么办?我们只要先把所有向量按照代价从小到大排个序然后贪心地选取可行解去消元就可以了。
时间复杂度$O(n^3)$。
要注意精度。
Code:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long double db; const int N = ;
const db eps = 1e-; int n, m, used[N]; struct Item {
int c;
db s[N]; friend bool operator < (const Item &x, const Item &y) {
return x.c < y.c;
} } a[N]; inline db fabs(db x) {
return x > ? x : -x;
} int main() {
freopen("2.in", "r", stdin); scanf("%d%d", &n, &m);
for(int i = ; i <= n; i++)
for(int j = ; j <= m; j++)
scanf("%Lf", &a[i].s[j]);
for(int i = ; i <= n; i++) scanf("%d", &a[i].c); sort(a + , a + + n);
int cnt = , ans = ;
for(int i = ; i <= n; i++) {
for(int j = ; j <= m; j++) {
if(fabs(a[i].s[j]) > eps) {
if(!used[j]) {
used[j] = i, cnt++, ans += a[i].c;
break;
} else {
db f = a[i].s[j] / a[used[j]].s[j];
for(int k = j; k <= m; k++)
a[i].s[k] -= f * a[used[j]].s[k];
}
}
}
} printf("%d %d\n", cnt, ans);
return ;
}
Luogu 3265 [JLOI2015]装备购买的更多相关文章
- Luogu P3265 [JLOI2015]装备购买
好吧刚开始不知道自己在写什么,,,后来写了线性方程组,又过了一天一上午终于明白了... 当然题意很显然:求代价最小的极大线性无关组. 那就高斯消元(好吧刚开始我不会用它来解这道题qwq) 第一个循环是 ...
- bzoj 4004: [JLOI2015]装备购买 拟阵 && 高消
4004: [JLOI2015]装备购买 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 337 Solved: 139[Submit][Status ...
- BZOJ_4004_[JLOI2015]装备购买_线性基
BZOJ_4004_[JLOI2015]装备购买_线性基 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) ...
- [JLOI2015]装备购买 (高斯消元)
[JLOI2015]装备购买 \(solution:\) 首先这道题的题面已经非常清晰的告诉我们这就是线性空间高斯消元的一道题(可以用某些装备来表示另一件装备,这已经不能再明显了),只是这道题要求我们 ...
- BZOJ 4004: [JLOI2015]装备购买
4004: [JLOI2015]装备购买 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1154 Solved: 376[Submit][Statu ...
- bzoj 4004 [JLOI2015]装备购买 拟阵+线性基
[JLOI2015]装备购买 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1820 Solved: 547[Submit][Status][Dis ...
- 【BZOJ4004】[JLOI2015]装备购买 贪心+高斯消元
[BZOJ4004][JLOI2015]装备购买 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 ( ...
- [JLOI2015]装备购买(线性基)
[JLOI2015]装备购买 题目描述 脸哥最近在玩一款神奇的游戏,这个游戏里有 nn 件装备,每件装备有 \(m\) 个属性,用向量 \(\mathbf{z_i}\)=\((a_1, \ldots ...
- 洛谷P3265 [JLOI2015]装备购买 [线性基]
题目传送门 装备购买 格式难调,题面就不放了. 分析: 一句话,有$n$件物品,每件物品有$m$个属性和一个花费值,如果一个装备的属性值可以由其他装备的属性值改变系数后组合得到那就不买,求购买最多装备 ...
随机推荐
- iOS10修改电池状态栏的方法
- javascript:;与javascript:void(0)
如果想做一个链接点击后不做任何事情,或者响应点击而完成其他事情,可以设置其属性 href = "#",但是,这样会有一个问题,就是当页面有滚动条时,点击后会返回到页面顶端,用户体验 ...
- 十九、python沉淀之路--装饰器
一.实现装饰器的预备知识 装饰器 = 高阶函数 + 函数嵌套 + 闭包 1.高价函数定义: 1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名 3.满足上述条件任意一个,都可称之 ...
- Python学习系列(六)(模块)
Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...
- STM32GPIO管脚设置
(1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GP ...
- Sentry的授权模型
首先在jdbc中指定的hive用户是一个linux的用户(必须和一个同名linux用户一一对应):这个用户如果是管理员用户,那么可以进行管理工作:比如创建.删除角色,查看角色和用户绑定情况等等:如果不 ...
- 集群/分布式环境下,Session处理策略
前言 在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理.如果不做任何处理的话,用户将出现频繁登录的现象.比如集中中存在A.B两台服务器,用户在第一次访问网站是,Ngin ...
- Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
python3.6.3 我在处理爬虫时候使用BeautifulSoup中遇到报错 “ bs4.FeatureNotFound: Couldn't find a tree builder with t ...
- 小程序App方法
App() 注册一个小程序 小程序的入口方法 //app.js App({ onLaunch: function(options) { console.log("onLaunch" ...
- StarkSoft题库管理系统
一.功能介绍 1.自定义试题库管理系统目录.难易程度,题型,知识库等. 2.试题录入. 3.强大的试题编辑功能,并与通常应用编辑工具有共通. 4.灵活的试卷构造功能,用户可自定 ...