2 条题解
-
0问号 (周文浩) LV 10 @ 2024-4-1 16:37:22
#include<bits/stdc++.h> #define maxn 100005 #define mod 1000000007 #define eps 1e-8 using namespace std; typedef long long ll; ll n,m; long double a[505][505]; long double c[505]; int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ double temp; cin>>temp; a[i][j]=temp; } } for(int i=1;i<=n;i++){ double temp; cin>>temp; c[i]=temp; } double sum=0; ll num=0; for(int i=1;i<=n;i++){ int flag=0; for(int j=i;j<=n;j++){ if(fabs(a[j][i])>eps){ if(flag==0||c[j]<c[flag]) { flag=j; } } } /*if(fabs(a[i][i])<eps){ num=i-1; break; }*/ if(flag==0) continue; num++; for(int k=1;k<=m;k++){ swap(a[i][k],a[flag][k]); } swap(c[i],c[flag]); sum+=c[i]; for(int j=1;j<=n;j++){ if(i==j||fabs(a[j][i])<eps) continue; long double state=a[j][i]/a[i][i]; for(int k=1;k<=m;k++){ a[j][k]-=a[i][k]*state; } } } cout<<num<<" "<<sum; }
-
-12023-9-29 14:58:27@
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<iostream> using namespace std; const double eps=1e-5; int p[1001],n,m,ans,sum; struct node{ int vi; double x[1001]; }a[1001];
bool cmp(node a,node b){ return a.vi<b.vi; }
void solve() { for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(fabs(a[i].x[j])>eps){ if(!p[j]){ p[j]=i; sum++; ans+=a[i].vi; break; } else { double t=(double)(1.0a[i].x[j])/(1.0a[p[j]].x[j]); for(int k=j;k<=m;k++){ a[i].x[k]-=t*(a[p[j]].x[k]); } } } } } printf("%d %d",sum,ans); }
int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%lf",&a[i].x[j]); for(int i=1;i<=n;i++) scanf("%d",&a[i].vi); sort(a+1,a+n+1,cmp); solve(); return 0; }[](https://)
- 1
信息
- ID
- 120
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 8
- 已通过
- 7
- 上传者