BZOJ 4004 装备购买(贪心+线性基)
来源:互联网 发布:微信公共号平台源码 编辑:程序博客网 时间:2024/05/21 06:20
Description
脸哥最近在玩一款神奇的游戏,这个游戏里有
Input
第一行两个数
Output
一行两个数,第一个数表示能够购买的最多装备数量,第二个数表示在购买最多数量的装备的情况下的最小花费
Sample Input
3 3
1 2 3
3 4 5
2 3 4
1 1 2
Sample Output
2 2
Solution
把所有装备按价值从小到大排序后找线性基即可,贪心证明需用到拟阵
Code
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<queue>#include<map>#include<set>#include<ctime>using namespace std;typedef long long ll;typedef long double ld;typedef pair<int,int>P;const int INF=0x3f3f3f3f,maxn=505;#define eps 1e-5int sign(ld x){ if(fabs(x)<eps)return 0; if(x>eps)return 1; return -1;}struct node{ ld x[maxn]; int c; bool operator<(const node&b)const { return c<b.c; }}a[maxn];int n,m,base[maxn];int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%llf",&a[i].x[j]); for(int i=1;i<=n;i++)scanf("%d",&a[i].c); sort(a+1,a+n+1); int num=0,cost=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(sign(a[i].x[j])) { if(!base[j]) { base[j]=i,num++,cost+=a[i].c; break; } else { ld temp=a[i].x[j]/a[base[j]].x[j]; for(int k=j;k<=m;k++)a[i].x[k]-=temp*a[base[j]].x[k]; } } printf("%d %d\n",num,cost); return 0;}
阅读全文
0 0
- BZOJ 4004 装备购买(贪心+线性基)
- 4004: [JLOI2015]装备购买 贪心+线性基
- [高斯消元 线性基 贪心 拟阵 逆元] BZOJ 4004 [JLOI2015]装备购买
- [BZOJ4004][JLOI2015]装备购买(贪心+高斯消元求线性基)
- bzoj 4004 装备购买
- BZOJ 4004 [JLOI2015]装备购买 拟阵+极大线性无关组
- bzoj 4004: [JLOI2015]装备购买
- BZOJ 4004: [JLOI2015]装备购买
- BZOJ 4004: [JLOI2015]装备购买
- 【BZOJ4004】【JLOI2015】装备购买 线性基
- 【bzoj4004】 JLOI2015装备购买 拟阵+线性基
- SHU 购买装备 贪心+二分
- SHU OJ 420 购买装备(假装背包,其实贪心)
- 4004: [JLOI2015]装备购买
- BZOJ 2460 元素(贪心+线性基)
- BZOJ 2460 [贪心][线性基]
- 购买装备
- BZOJ 2115 WC2011 Xor 线性基+贪心
- 4.3 STM32 时钟系统
- 如何优雅地删除Redis大键
- 特征选择算法在微博业务应用中的演进历程
- spring beans源码解读
- 【备忘】最新oracle11g DBA 开发和应用数据库视频教程
- BZOJ 4004 装备购买(贪心+线性基)
- 提高工作效率,使用Bug分类列表来更好的进行软件测试
- SCAU B 体育课
- JAVA集合
- GUI界面的选择
- [FFT] Atcoder AGC005F. Many Easy Problems
- Databinding的使用与自定义控件的全局注入
- node 操作文件流 fs 同步与异步 流式文件的写入与读取
- python操作mysql