注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

ydc的博客

 
 
 

日志

 
 

bzoj1013  

2013-01-23 18:11:15|  分类: bzoj |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

第二题开始像是物理题

其实把那些式子展开然后发现二次项都没了!

然后高斯消元

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 20
#define eps 1e-10
using namespace std;
int dcmp(double p)
{
    if(fabs(p)<eps)  return 0;
    return p>eps?1:-1;
}
double a[MAXN][MAXN],b[MAXN],x[MAXN],P[MAXN][MAXN];
int n;
void read()
{
    scanf("%d",&n);
    for(int i=1;i<=n+1;i++)
        for(int j=1;j<=n;j++)
            scanf("%lf",&P[i][j]);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            a[i][j]=2*P[n+1][j]-2*P[i][j],b[i]=b[i]-P[i][j]*P[i][j]+P[n+1][j]*P[n+1][j];
}
void Gauss()
{
    for(int i=1,j;i<=n;i++)
    {
        for(j=i;!dcmp(a[j][i]);j++);
        swap(b[i],b[j]);
        for(int k=i;k<=n;k++)
            swap(a[i][k],a[j][k]);
        for(j=i+1;j<=n;j++)
            if(dcmp(a[j][i]))
            {
                double p=a[i][i]/a[j][i];
                for(int k=i;k<=n;k++)
                    a[j][k]=a[i][k]-a[j][k]*p;
                b[j]=b[i]-b[j]*p;
            }
    }
    for(int i=n;i>=1;i--)
    {
        for(int j=i+1;j<=n;j++)
            b[i]=b[i]-x[j]*a[i][j];
        x[i]=b[i]/a[i][i];
    }
}
void print()
{
    for(int i=1;i<=n;i++)
        printf("%.3lf%c",x[i],i<n?' ':'\n');
}
int main()
{
    read();
    Gauss();
    print();
    return 0;
}
  评论这张
 
阅读(298)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017