栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3645 BiliBili

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3645 BiliBili

#include <math.h>#include <string>#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int N = 15;const int mod = 2;const double eps = 1e-8;int GCD;int gcd(int a,int b){ return b ? gcd(b,a%b) : a;}int lcm(int a,int b){ return a / gcd(a,b) * b;}void exgcd(int a,int b,int &x,int &y){ if(b == 0){ x = 1; y = 0; GCD = a; return ; } exgcd(b,a%b,x,y); int t = x; x = y; y = t - a/b*y;}struct Linear{ int R,C,var; double m[N][N]; double ans[N]; bool free[N]; Linear(){ memset(free,false,sizeof(free)); } Linear(int r,int c):R(r),C(c){ memset(free,false,sizeof(free)); } bool change(int r,int c){ int rr = r; for(int i=r+1;i<R;i++) if(fabs(m[i][c]) > fabs(m[rr][c])) rr = i; if(rr != r){ memcpy(m[N-1],m[r],sizeof(m[r])); memcpy(m[r],m[rr],sizeof(m[r])); memcpy(m[rr],m[N-1],sizeof(m[r]));} return fabs(m[r][c]) > eps; } void op(int r,int c){ for(int i=0;i<R;i++){ if(i == r || fabs(m[i][c]) < eps) continue; double mult = m[i][c] / m[r][c]; for(int j=c;j<=C;j++) m[i][j] -= mult * m[r][j]; } } void gauss(){ int curC = 0; for(int curR=0;curR<R && curC<C;curC++){ if(change(curR,curC)){ op(curR,curC); curR++; } else{ free[curC] = true; continue; } } for(int i=0;i<R;i++) ans[i] = m[i][C] / m[i][i]; } bool allzero(int r){ for(int j=C-1;j>=0;j--) if(m[r][j] != 0) return false; return true; } void deal(){ for(int i=R-1;i>=0;i--){ if(allzero(i)){ if(m[i][C]){ var = -1; break; } } else{ var = C - (i+1); break; } } if(var == -1) return ; for(int mask=0;mask<(1<<var);mask++){ int ith = 0; for(int curR=C-var-1,curC=C-1;curR>=0 && curC>=0;curC--){ if(free[curC]){ ans[curC] = mask >> ith & 1; ith++; } else{ int sum = m[curR][C]; for(int j=curC+1;j<C;j++) sum -= m[curR][j] * ans[j]; curR--; } } } } void init(){ scanf("%d%d",&R,&C); for(int i=0;i<R;i++) for(int j=0;j<=C;j++) scanf("%lf",&m[i][j]); } void debug(){ puts(" *** "); for(int i=0;i<=R;puts(""),i++) for(int j=0;j<=C;j++) printf("%.2f ",m[i][j]); puts("*****"); } double fix(double x) { if(fabs(x) < 0.005) return 0; else return x; } void printans(){ for(int i=0;i<C;i++) printf("%.2f%c",fix(ans[i]),i==C-1?'n':' '); }};inline double sqr(double x){ return x * x;}int main(){ int T; scanf("%d",&T); while(T--) { Linear L(11,11); for(int i=0;i<12;i++) for(int j=0;j<=11;j++) scanf("%lf",&L.m[i][j]); for(int i=0;i<12;i++){ L.m[i][11] = sqr(L.m[i][11]); for(int j=0;j<11;j++){ L.m[i][11] -= sqr(L.m[i][j]); L.m[i][j] *= -2; } } for(int i=0;i<11;i++) for(int j=0;j<=11;j++) L.m[i][j] -= L.m[11][j]; L.gauss(); L.printans(); } return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369242.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号