您的位置:首页 > 其它

BZOJ 4004: [JLOI2015]装备购买

2016-06-17 19:54 399 查看
MD这题有毒

拟阵+线性基什么的按照14年论文的方法易证一下然后高斯消元搞一搞就W

A了(垃圾数据坑精度)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#include<cmath>
using namespace std;
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define per(i,r,l) for(int i=r;i>=l;i--)
#define mmt(a,v) memset(a,v,sizeof(a))
#define tra(i,u) for(int i=head[u];i;i=e[i].next)
const int N=500+5;
const double eps=1e-5;
typedef long long ll;
#define double long double
int dcmp(double x){
if(fabs(x)<eps)return 0;
return x<0?-1:1;
}
int n,m;
struct equ{
double a
;
int c;
bool operator < (const equ &x)const{return c<x.c;}
}a
;
int p
;
int main(){
//freopen("a.in","r",stdin);
scanf("%d%d",&n,&m);
rep(i,1,n)rep(j,1,m)scanf("%Lf",&a[i].a[j]);
rep(i,1,n)scanf("%d",&a[i].c);
sort(a+1,a+1+n);
int sum=0,cost=0;
rep(i,1,n)rep(j,1,m)if(dcmp(a[i].a[j]))
if(p[j]){
double tmp=a[i].a[j]/a[p[j]].a[j];
rep(k,j,m)a[i].a[k]-=tmp*a[p[j]].a[k];
}else{
p[j]=i;
sum++;cost+=a[i].c;
break;
}
printf("%d %d\n",sum,cost);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: