【bzoj4004】装备购买
Solution
这题的话。。其实就是求\(n\)个\(m\)维向量的极大线性无关组,并且要求权值最大
然后套路什么的跟Portal-->bzoj3105和bzoj2460差不多,后面那题比较裸就没有写博了qwq
与这两题不同的是,这里换成了向量的线性无关
那其实写起来跟线性基差不多,本质上还是高斯消元,我们把一个向量看成矩阵中的一行,然后枚举去消这个向量的每一维,如果这个向量最终被消为零了那么就不能加进去作为基,否则的话就存在第一个没有被消为零的那一位中,与线性基不同的只是消的时候的运算变回了正常的高消方式而已
然后就是加入的顺序,依旧还是按照价值排序然后直接贪心
具体证明什么的还是要用到Portal-->拟阵
我们将每个装备看成一个\(m\)维向量,将这\(n\)个向量的集合记为\(S\),如果\(S\)的一个子集\(R\)不存在任何一个非空子集存在满足题目中的替换条件的元素(也就是线性相关),那么\(R\in I\)
然后就是证明这个东西是个拟阵:
1、\(S\)肯定是有限集合
2、遗传性:设\(A\in I\),由定义知\(A\)不存在任何一个非空子集存在满足替换的元素,所以对于任意\(B\subseteq A\),都有\(B\)满足这个性质(\(B\)的子集就是\(A\)的子集),所以\(B\in I\),所以\(I\)是遗传的
3、交换性质:设\(A,B\in I\),且\(|B|>|A|\),要证明\(\exists x\in B-A\)使得\(A\cup \{x\}\in I\),反证一波:假设对于\(\forall x\in B-A\)均有\(A\cup \{x\}\notin I\),那么\(B-A\)中的包含的向量均可以写成\(A\)的某个子集中向量的线性表示,所以\(B\)中所有的向量都可以写成\(A\)的某个子集中向量的线性表示,然后这个与前面的\(|B|>|A|\)是矛盾的,所以假设不成立,得证
(然后就发现这个东西的证明怎么跟bzoj3105的几乎一喵一样。。。把异或和为\(0\)换成了线性表示而已。。)
然后就可以给这个拟阵\(M\)关联一个权值函数\(w\),每个\(S\)中的向量对应的权值就是这件装备的价值,然后子集的权值就是包含向量的权值和
然后愉快贪心
(然后莫名其妙感觉自己写了两篇一喵一样的博。。。可能是错觉)
哦对以及b站的数据加强了一波所以要用long long否则会炸精度出锅qwq
代码大概长这样
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ld long double
using namespace std;
const int MAXN=510;
const ld eps=1e-8;
struct Data{
ld a[MAXN];
int val;
friend bool operator < (Data x,Data y)
{return x.val<y.val;}
}a[MAXN];
int base[MAXN];
int n,m,ans,cnt;
void solve();
int main(){
#ifndef ONLINE_JUDGE
freopen("a.in","r",stdin);
#endif
scanf("%d%d",&n,&m);
for (int i=1;i<=n;++i)
for (int j=1;j<=m;++j)
scanf("%Lf",&a[i].a[j]);
for (int i=1;i<=n;++i)
scanf("%d",&a[i].val);
sort(a+1,a+1+n);
solve();
printf("%d %d\n",cnt,ans);
}
void solve(){
ans=0; cnt=0;
ld tmp;
for (int i=1;i<=n;++i)
for (int j=1;j<=m;++j){
if (fabs(a[i].a[j])>eps){
if (!base[j]){
base[j]=i;
++cnt; ans+=a[i].val;
break;
}
else{
tmp=a[i].a[j]/a[base[j]].a[j];
for (int k=1;k<=m;++k)
a[i].a[k]-=a[base[j]].a[k]*tmp;
}
}
}
}
【bzoj4004】装备购买的更多相关文章
- 【BZOJ4004】装备购买(线性基)
[BZOJ4004]装备购买(线性基) 题面 BZOJ 洛谷 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am ...
- 【BZOJ4004】[JLOI2015]装备购买 贪心+高斯消元
[BZOJ4004][JLOI2015]装备购买 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 ( ...
- 【BZOJ】【4004】【JLOI2015】装备购买
拟阵/贪心 题解戳这里:http://blog.csdn.net/popoqqq/article/details/45148309 思路: 裸拟阵…… 维护线性基,将武器按价格排序,从小到大塞进去,如 ...
- 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 ...
- 洛谷P3265 [JLOI2015]装备购买 [线性基]
题目传送门 装备购买 格式难调,题面就不放了. 分析: 一句话,有$n$件物品,每件物品有$m$个属性和一个花费值,如果一个装备的属性值可以由其他装备的属性值改变系数后组合得到那就不买,求购买最多装备 ...
- bzoj 4004 [JLOI2015]装备购买 拟阵+线性基
[JLOI2015]装备购买 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1820 Solved: 547[Submit][Status][Dis ...
- [JLOI2015]装备购买(线性基)
[JLOI2015]装备购买 题目描述 脸哥最近在玩一款神奇的游戏,这个游戏里有 nn 件装备,每件装备有 \(m\) 个属性,用向量 \(\mathbf{z_i}\)=\((a_1, \ldots ...
随机推荐
- Appium+python的单元测试框架unittest(4)——断言(转)
(原文:https://www.cnblogs.com/fancy0158/p/10051576.html) 在我们编写的测试用例中,测试步骤和预期结果是必不可少的.当我们运行测试用例时,得到一个运行 ...
- https双向认证网站搭建
新建网站 在搭建网站证书之前,我们先搭建好我们的网站 1.网站基本搭建 为我们的项目新建一个网站,按照如下的步骤来 1,打开IIS,右键单击网站弹出菜单,选择网站(如图1.1.1) 图1.1.1 2, ...
- 原生WebGL场景中绘制多个圆锥圆柱
前几天解决了原生WebGL开发中的一个问题,就是在一个场景中绘制多个几何网格特征不同的模型,比如本文所做的绘制多个圆锥和圆柱在同一个场景中,今天抽空把解决的办法记录下来,同时也附上代码.首先声明,圆柱 ...
- 亚马逊拟斥资15亿美元建航空货运中心 - Amazon to spend $1.49 bln on air cargo hub, fans talk of bigger ambitions - ReutersFebruary 1, 2017
2月1日消息,亚马逊本周二宣布将在肯塔基州开建其第一个航空货运中心,以应对高速增长的航空货运需求.亚马逊预计,该项目将带来2000个工作岗位. 据悉,该项计划总投入约为15亿美元,亚马逊或可从当地政府 ...
- SpringMVC Controller介绍及常用注解——@Controller
一 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model ...
- python format用法详解
#常用方法:print('{0},{1}'.format('zhangk', 32)) print('{},{},{}'.format('zhangk','boy',32)) print('{name ...
- nagios监控安装esxi的服务器(宿主机)
首先,该博文大部分内容来自网络,少部分是自己监控过程中遇到的问题.如果有侵权,请联系告知!!! 现在互联网公司,有能力的都是自己研发监控系统,要么就是zabbix或者小米的监控,还都二次开发等等,可能 ...
- [Algorithm] A* Search Algorithm Basic
A* is a best-first search, meaning that it solves problems by searching amoung all possible paths to ...
- Scrum立会报告+燃尽图(十月十六日总第七次):总结工作经验,商讨未来策略
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2197 Scrum立会master:李文涛 一.小组介绍 组长:付佳 组员 ...
- 超级迷宫需求分析与建议-NABCD模型
超级迷宫需求分析与建议-NABCD模型 制作者-姜中希 1N-Need 需求 首先这是一个手机游戏风靡的时代,随着智能手机不断的更新问世,4G网络的不断扩大普及,越来越多的手机游戏受到广大玩家的追捧 ...