博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj4004: [JLOI2015]装备购买
阅读量:4321 次
发布时间:2019-06-06

本文共 1026 字,大约阅读时间需要 3 分钟。

线性基,这题就是求秩

高斯消元,非零行向量的个数就是秩

最小代价只需在消元的时候选择代价小的即可

要开long double

#include
#include
#include
#include
#include
#include
using namespace std;int n,m,c[510];long double qg[510][510],qc[510];void guess(){ int d=1,mmin=0; for(int j=1;j<=m;j++) { int p=-1; for(int i=d;i<=n;i++) if(fabs(qg[i][j])>1e-8&&(p==-1||c[p]>c[i])) p=i; if(p==-1)continue; mmin+=c[p]; for(int k=j;k<=m;k++)swap(qg[p][k],qg[d][k]); swap(qc[p],qc[d]); swap(c[p],c[d]); for(int i=1;i<=n;i++) { if(i==d)continue; long double rate=qg[i][j]/qg[d][j]; for(int k=j;k<=m;k++)qg[i][k]-=qg[d][k]*rate; qc[i]-=qc[d]*rate; } d++; } printf("%d %d\n",d-1,mmin);}int main(){ freopen("1.in","r",stdin); freopen("1.out","w",stdout); scanf("%d%d",&n,&m); memset(qc,0,sizeof(qc)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%Lf",&qg[i][j]); for(int i=1;i<=n;i++)scanf("%d",&c[i]); guess(); return 0;}

 

转载于:https://www.cnblogs.com/AKCqhzdy/p/9397993.html

你可能感兴趣的文章
十四. k8s资源需求和限制, 以及pod驱逐策略
查看>>
三. k8s基本操作以及pod存活以及可用性验证钩子
查看>>
五. k8s--service学习笔记
查看>>
二. k8s安装过程
查看>>
jenkins pipeline 使用遇到的问题
查看>>
四. k8s--pod控制器
查看>>
一. python数据结构与算法
查看>>
django模型内部类meta解释
查看>>
v-for(:key)绑定index、id、key的区别
查看>>
el-tree文本内容过多显示不完全问题(解决)
查看>>
el-table翻页序号不从1开始(已解决)
查看>>
vue-cil 打包爬坑(解决)
查看>>
定位问题 vue+element-ui+easyui(兼容性)
查看>>
四叶草(css)
查看>>
nginx——前端服务环境
查看>>
vue+element-ui 字体自适应不同屏幕
查看>>
Vue 循环为选中的li列表添加效果
查看>>
vue创建脚手架 cil
查看>>
ArcGIS分支版本化( Branch Versioning )技术介绍
查看>>
scrapy过滤重复数据和增量爬取
查看>>