[JLOI2015]裝備購買-實數線性基
【題目地址】
題目大意
給你個元素,每個元素有一個代價,讓你選出代價和最小的一個集合,且這個集合能線性表出其它所有元素。
其實,一看題目,可以想到一個就是高斯消元,但是複雜度似乎有點高。
元素組合其實就類似於線性表出,所以我們考慮用線性基來做。
首先還有一個貪心的思想,就是如果能選入線性基的,我們肯定從代價小開始的選,所以我們開始按照代價排序,然後一個一個往線性基裡面插入,每成功插入一個我們就可以知道,後面的這一維屬性可以消掉了,所以做一個類似高斯消元的操作就好啦。
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define db double
using namespace std;
const int M=510,N=1010;
const db eps=1e-4;
int n,m,x;
struct Eq{
int w;db v[N];
void in(){
for(int i=1;i<=m;i++){
scanf("%d",&x);v[i]=x;
}
}
bool operator <(const Eq &a)const{return w<a.w;}
}E[M];
int bas[N],tot,cost;
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)E[i].in();
for(int i=1;i<=n;i++)scanf("%d",&E[i].w);
sort(E+1,E+n+1);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(fabs(E[i].v[j])>eps){
if(!bas[j]){
bas[j]=i;++tot;cost+=E[i].w;
break;
}else{
db t=E[i].v[j]/E[bas[j]].v[j];
for(int k=j;k<=m;k++){
E[i].v[k]-=E[bas[j]].v[k]*t;
}
}
}
}
}
printf("%d %d\n",tot,cost);
return 0;
}
相關文章
- 裝備購買
- 人工智慧必備數學基礎:線性代數基礎(2)人工智慧
- 線性代數基礎
- 【scipy 基礎】--線性代數
- 域名為什麼需要備案?購買 GoDaddy域名需要備案嗎?Go
- 線性基
- 淺談應該購買英特爾Mac還是等待購買基於Arm的MacMac
- 資料科學必備基礎之線性迴歸資料科學
- Redis 購物車 - 刪除商品與更新購買數量Redis
- 實體店購買組裝電腦注意事項 買電腦必讀終極攻略!
- 論累積性裝備與迭代性裝備的原理和設計
- 購買膝上型電腦時必備的知識 購買筆記本時該注意什麼?筆記
- 是誰在購買二手服裝?
- 計算機基礎:離散數學和完備性計算機
- 搭配購買
- 土地購買
- 線性基模板
- 線性代數
- 買道具省時省力!《神武4》手遊快捷購買功能今日上線
- 未來裝備探索:數字孿生裝備
- 45%的電動車購買者有意購買特斯拉
- 高等代數理論基礎22:線性相關性
- 人工智慧數學基礎----線性二階近似人工智慧
- 異或線性基
- 免備案空間是什麼?怎麼購買免備案空間主機?
- xgp怎麼購買 電腦xgp購買流程詳解
- 線性篩合數
- 線性代數中的線性方程組方法
- MATLAB版線性代數-線性方程組1Matlab
- 域名和伺服器都已備案,想購買海外伺服器伺服器
- 【數值計算方法】非線性方程求根-數值實驗
- 數智化賦能裝備製造業轉型升級,智慧採購商城系統嚴控採購成本,實現降本增效
- 玩家是如何在Steam上購買遊戲的? 玩家購買遊戲決策過程實錄遊戲
- 手環購買者分析:GfK智慧產品購買者洞察
- 採購數字化的重要性
- 線性代數與資料學習:MIT教授Gilbert Strang幫你打下堅實的數學基礎MIT
- pycharm需要購買麼PyCharm
- 小白基金購買指南