bzoj 4004 [JLOI2015]装备购买 拟阵+线性基
[JLOI2015]装备购买
Time Limit: 20 Sec  Memory Limit: 128 MB
Submit: 1820  Solved: 547
[Submit][Status][Discuss]
Description
Input
Output
一行两个数,第一个数表示能够购买的最多装备数量,第二个数表示在购买最多数量的装备的情况下的最小花费
Sample Input
1 2 3
3 4 5
2 3 4
1 1 2
Sample Output
HINT
以后再开一篇blog,发现对于线性基不是特别了解,线性基应该是一种概念吧,不是特别清楚
不是针对xor的吧,这里的话就是和线性基构造方式差不多,如果当前位置有,并且线性基里没有,就
加入,否则就减去相当的倍数,用拟阵证明是个极大线性无关组。
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstdio> #define double long double
#define eps 0.00001
#define N 510
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*f;
} int n,m,ans,num;
int vis[N];
struct Node
{
double b[N];
int val;
}a[N]; bool cmp(Node x,Node y){return x.val<y.val;}
int main()
{
n=read(),m=read();
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
scanf("%Lf",&a[i].b[j]);
for (int i=;i<=n;i++) a[i].val=read();
sort(a+,a+n+,cmp);
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
if (fabs(a[i].b[j])>eps)
{
if (!vis[j])
{
vis[j]=i;
ans+=a[i].val;
num++;
break;
}
else
{
double t=(double)a[i].b[j]/(double)a[vis[j]].b[j];
for (int k=j;k<=m;k++)
a[i].b[k]-=t*a[vis[j]].b[k];
}
}
printf("%d %d\n",num,ans);
}
bzoj 4004 [JLOI2015]装备购买 拟阵+线性基的更多相关文章
- bzoj 4004: [JLOI2015]装备购买 拟阵 && 高消
		4004: [JLOI2015]装备购买 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 337 Solved: 139[Submit][Status ... 
- bzoj 4004 [JLOI2015]装备购买——拟阵证明贪心+线性基
		题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4004 看Zinn博客水过去…… 运用拟阵可以证明按价格从小到大买的贪心是正确的.但自己还不会 ... 
- BZOJ_4004_[JLOI2015]装备购买_线性基
		BZOJ_4004_[JLOI2015]装备购买_线性基 Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) ... 
- BZOJ 4004: [JLOI2015]装备购买
		4004: [JLOI2015]装备购买 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1154 Solved: 376[Submit][Statu ... 
- [JLOI2015]装备购买(线性基)
		[JLOI2015]装备购买 题目描述 脸哥最近在玩一款神奇的游戏,这个游戏里有 nn 件装备,每件装备有 \(m\) 个属性,用向量 \(\mathbf{z_i}\)=\((a_1, \ldots ... 
- BZOJ 4004: [JLOI2015]装备购买 高斯消元解线性基
		BZOJ严重卡精,要加 $long$ $double$ 才能过. 题意:求权和最小的极大线性无关组. 之前那个方法解的线性基都是基于二进制拆位的,这次不行,现在要求一个适用范围更广的方法. 考虑贪心 ... 
- BZOJ 4004 [JLOI2015]装备购买 | 线性基
		题目链接 Luogu P3265 题解 非常正常的线性基! 但是我不会线性基-- (吐槽:#define double long double 才过--) #include <cstdio> ... 
- BZOJ 4004 [JLOI2015]装备购买 ——线性基
		[题目分析] 题目很简单,就是要维护一个实数域上的线性基. 仿照异或空间的线性基的方法,排序之后每次加入一个数即可. 卡精度,开long double 和 1e-6就轻松水过了. [代码] #incl ... 
- 洛谷P3265 [JLOI2015]装备购买 [线性基]
		题目传送门 装备购买 格式难调,题面就不放了. 分析: 一句话,有$n$件物品,每件物品有$m$个属性和一个花费值,如果一个装备的属性值可以由其他装备的属性值改变系数后组合得到那就不买,求购买最多装备 ... 
随机推荐
- codeforces 845A Chess Tourney
			参考:https://blog.csdn.net/zhongyuchen/article/details/77478039 #include <iostream> #include < ... 
- python2.7入门---SMTP发送邮件
			SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.python的smtplib提 ... 
- Scala继承
			override重写 为什么要用override关键字?因为这样更清楚,不容易出错,比如打错字了,就没覆盖成功,但是不会报错 override可以覆盖feild和method class Person ... 
- Java:位移运算符
			Java中有三个位移运算符,用于对int类型整数的二进制补码进行操作: 1. "<<": 左移运算符 在二进制补码末尾添加“0”,之前的其他位相当于左移了一位,可看作成 ... 
- 洛谷P2307 迷宫
			怎么又是一道叫迷宫的题呀QWQ 题目链接 这道题主要是对并查集的考察,需要注意的坑点在于有可能存在的不止一个联通块. 我们只需要对输入的两个数据进行判断,如果在一个集合中证明有多条路则输出0,如果不在 ... 
- cgi、fastcgi、php-cgi、php-fpm的关系
			1. CGI CGI全称是"公共网关接口"(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行"交谈"的一种工具,其 ... 
- Objective-C反射机制
			oc反射机制有三个用途: 1.获得Class Class LoginViewController = NSClassFromString(@"LoginViewController" ... 
- Linux中java应用程序的部署,使其开机自动启动
			初步需求:将在Windows/MyEclipse中开发的java应用程序部署到Linux服务器上,使其运行 针对需求,可以参考下面这些文章,但是这些文章很多东西没有提及到,我自己尝试部署运行 在lin ... 
- jmeter3.0生成html格式的dashboard性能测试结果
			jmeter3.0以上支持生成dashboard的html报告,官网介绍:https://jmeter.apache.org/usermanual/generating-dashboard.html ... 
- XPivot 用户手册及版本更新公示
			此文仅介绍XPivot的通用功能,如有对项目中定制的高级功能感兴趣的可留言讨论 XPivot当前版本v2.2 [2015-04-20发布] v2.1 下载链接: http://pan.baidu.co ... 
