【BZOJ】1013 球形空間產生器

【解析】代數變形+高斯消元

[分析]
依據題目以下的提示。設x[i][j]表示第i個點在第j維的坐標。r[j]為圓心在第j維的坐標
能夠知道:
dis=根號(∑(x[i][j]-r[j])^2)。
因為平方的非負性。所以能夠推出 dis^2=∑(x[i][j]-r[j])^2。
依據平方和公式,(x[i][j]-r[j])^2=r[j]^2+x[i][j]^2-2*x[i][j]*r[j]。
∴dis^2=∑r[j]^2+∑x[i][j]^2-∑2*x[i][j]*r[j]。
依據n+1個坐標,能夠用i和i+1兩個坐標列出等量條件:
∑r[j]^2+∑x[i][j]^2-∑2*x[i][j]*r[j]=∑r[j]^2+∑x[i+1][j]^2-∑2*x[i+1][j]*r[j]。
把∑r[j]^2消去。參數放在右邊,未知數放在左邊。
化簡易得:
∑(x[i+1][j]-x[i][j])*r[j]=(∑x[i+1][j]^2-∑x[i][j]^2)/2。
如今變成了一元n次的方程組,能夠直接使用高斯消元求解。
對于∑x[i+1][j]^2,能夠所有提前預處理出來。這樣會快一點。

[代碼]

因為準備要睡覺了沒心機檢查,結果重新AC,手感真好...

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
using namespace std;const int N=15;
const double eps=1e-5;int n; double x[N][N];
double a[N][N],sum[N],res[N];void init(void)
{scanf("%d",&n);for (int i=1;i<=n+1;i++)for (int j=1;j<=n;j++)scanf("%lf",&x[i][j]);for (int i=1;i<=n+1;i++)for (int j=1;j<=n;j++)sum[i]+=x[i][j]*x[i][j];for (int i=1;i<=n;i++){for (int j=1;j<=n;j++)a[i][j]=x[i+1][j]-x[i][j];a[i][n+1]=(sum[i+1]-sum[i])/2;}
}inline int cmp(double i,double j)
{if (fabs(i-j)<eps) return 0;return i<j?-1:1;
}inline void swap(int i,int j)
{for (int k=1;k<=n+1;k++) a[i][k]+=a[j][k];for (int k=1;k<=n+1;k++) a[j][k]=a[i][k]-a[j][k];for (int k=1;k<=n+1;k++) a[i][k]-=a[j][k];
}void gauss(void)
{double r;for (int i=1;i<=n;i++){for (int j=i+1;j<=n;j++)if (!cmp(a[i][i],0)||cmp(abs(a[i][i]),abs(a[j][i]))>0) swap(i,j);for (int j=i+1;j<=n;j++)if (cmp(a[i][j],0)){r=a[j][i]/a[i][i];for (int k=i;k<=n+1;k++) a[j][k]-=a[i][k]*r;}}for (int i=n;i;i--){for (int j=i+1;j<=n;j++) a[i][n+1]-=a[i][j]*res[j];res[i]=a[i][n+1]/a[i][i];}for (int i=1;i<n;i++) printf("%0.3lf ",res[i]);printf("%0.3lf\n",res[n]);
}int main(void)
{init();gauss();	return 0;
}

【小結】
①理清思路再開始寫,理清思路要把自己不知道怎么寫的問題先想好。
②為了保證自己算法的正確性(盡管一般都是正確的),要套幾個小樣例去驗證。

轉載于:https://www.cnblogs.com/jzdwajue/p/7297543.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282840.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282840.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282840.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c語言不規則窗口,C語言不規則數組和指針

不規則數組是每一行的列數不一樣的二維數組&#xff0c;其原理如下圖所示&#xff0c;圖中的數組有3行&#xff0c;每行有不同的列數。在了解如何創建不規則數組之前&#xff0c;讓我們先看一下用復合字面量創建的二維數組。復合字面量是一種C構造&#xff0c;前面看起來像類型…

php spl_autoload_register() 函數

spl_autoload_register()的用法&#xff1a; 其中$this表示當前類&#xff0c;autoload()是我注冊的自動加載函數&#xff0c;當然這個只是一個函數名&#xff0c;只要不與php的關鍵字重復&#xff0c;符合一般函數名的命名規范即可。 使用自動加載之后&#xff0c;當我們在一個…

C語言中遞歸什么時候能夠省略return引發的思考:通過內聯匯編解讀C語言函數return的本質...

C語言中遞歸什么時候能夠省略return引發的思考&#xff1a;通過內聯匯編解讀C語言函數return的本質 事情的經過是這種&#xff0c;博主在用C寫一個簡單的業務時使用遞歸&#xff0c;因為粗心而忘了寫return。結果發現返回的結果依舊是正確的。經過半小時的反匯編調試。證明了我…

C# 為什么說CM+Fody+HC是WPF開發的最強組合?

01—名詞解析CM&#xff1a;Caliburn.Micro(簡稱CM)一經推出便備受推崇&#xff0c;作為一款MVVM開發模式的經典框架&#xff0c;越來越多的受到wpf開發者的青睞.我們看一下官方的描述&#xff1a;Caliburn是一個為Xaml平臺設計的小型但功能強大的框架。Micro實現了各種UI模式&…

c語言邏輯運算符兩側運算對象,邏輯運算符兩側運算對象的數據類型是什么?...

邏輯運算符兩側運算對象的數據類型&#xff1a;可以是任何合法的類型數據&#xff1b;因為邏輯運算符兩邊的運算對象&#xff0c;最終都被轉換成bool值(邏輯值)操作。0、null轉換為false&#xff0c;而所有非零、非false、非null值轉換為true&#xff1b;然后進行運算。邏輯運算…

python-list:列表-元組-字符串

列表 “列表”是一個值&#xff0c;它包含多個字構成的序列。術語“列表值”指的是列表本身&#xff08;它作為一個值&#xff0c;可以保存在變量中、傳遞給函數&#xff09;--&#xff1a;按下標取值、切片、for循環、用于len()以及in not in等 list [aa,bb,cc,dd]是一個簡單的…

創建相似對象,就交給『工廠模式』吧

源碼&#xff1a; 源代碼C# 系列導航&#xff1a; 目錄 定義&#xff08;Factory Pattern&#xff09;&#xff1a; 用來創建目標對象的類&#xff0c;將相似對象的創建工作統一到一個類來完成。 一、簡單工廠模式&#xff1a; 代碼&#xff1a; /// <summary>/// 產品枚…

《ASP.NET Core 6框架揭秘》實例演示[26]:跟蹤應用接收的每一次請求

很多人可能對ASP.NET Core框架自身記錄的診斷日志并不關心&#xff0c;其實這些日志對糾錯排錯和性能監控提供了很有用的信息。如果需要創建一個APM&#xff08;Application Performance Management&#xff09;系統來監控ASP.NET Core應用處理請求的性能及出現的異常&#xff…

C語言循環為1404的循環,考試,求大神幫忙,C語言,小弟感激不盡

若有定義語句&#xff1a;int a10; double b3.14;&#xff0c;則表達式Aab值的類型是___________。  (1)A).char B)int C) double D)float(2)若有定義語句&#xff1a;int x12,y8,z;&#xff0c;在其后執行語句z0.9x/y;&#xff0c;則z的值為___________。A)1.9 B)1 C)2 D)2.…

js題集19

1.實現斐波那契數列。達到題目中的效果。不知道斐波那契數列是啥的請自行百度。 function fibonacci(){ } var ffibonacci(); for(var i0;i<10;i){ console.log(f()); } //output:按順序輸出斐波那契數列的數字。 eg&#xff1a; 1 2 3 5 8 13 21 34 55 89轉載于:https://ww…

阿里云Maven鏡像配置

2019獨角獸企業重金招聘Python工程師標準>>> <mirror><id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> …

c語言中有12個球,數學老師做不出來的一道邏輯推理題

同志們 那個球不一定輕啊正確的是平分三份 取兩分稱if(平)。。。。。。在未稱過的4球中取兩個放左邊 和標準的球稱(稱過的球一定標準)。。。。。。if(平)。。。。。。。。。。。。在兩次都未稱過的球中取一個 和標準的稱。。。。。。。。。。。。if(平)。。。。。。。。。。。。…

WPF 實現彈幕效果

WPF 實現彈幕效果控件名&#xff1a;BarrageExample作者&#xff1a;WPFDevelopersOrg原文鏈接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40&#xff1b;Visual Studio 2022;項目使用 MIT 開源許可協議&#xff1b;此篇代碼目的只…

js題集23

1.實現函數--defaultArguments 功能如下&#xff1a; function add(a,b) { return ab;}; var add_ defaultArguments(add,{b:9}); add_(10); // returns 19 add_(10,7); // returns 17 add_(); // returns NaN add_ defaultArguments(add_,{b:3, a:2}); add_(10); // returns…

iteritems()與items()

iteritems&#xff1a;以迭代器對象返回字典鍵值對 item:以列表形式返回字典鍵值對 >>> dic {a:3,c:1,b:2} >>> print dic.iteritems() <dictionary-itemiterator object at 0x7fa381599628> >>> print dic.items() [(a, 3), (c, 1), (b, 2)…

WPF效果第一百九十八篇之模塊對比

前面效果中分享了彩色馬蹄圖的效果和范圍內拖拽;這不大假期的時間反正沒啥事就在家擼代碼;今天又是LisBox實現的效果,看最終效果:1、剛開始一朋友說用DataGrid來實現.首先把行對象轉換成列對象,至于控制列的話,就后臺重新賦值對象來控制前臺.我是覺得太費勁直接放棄了;還是首選…

android 與后臺通信,Android后臺線程和UI線程通訊實例

本節向你展示如何在任務中發送數據給UI線程里的對象&#xff0c;這個特性允許你在后臺線程工作&#xff0c;完了在UI線程展示結果。在UI線程定義一個HandlerHandler是Android系統線程管理框架里的一部分。一個Handler對象接收消息&#xff0c;并且運行代碼來處理消息。正常情況…

saltstack的狀態文件

saltstack狀態文件設定&#xff1a;編輯/etc/salt/master&#xff0c;修改其中關于“設置文件的目錄”的設置&#xff1a;說明&#xff1a;注意語法格式&#xff0c;頂格/冒號/兩個空格state_top: top.sls # The state system uses a "top" file to tell the minions…

POJ 2798:二進制轉換十六進制

很郁悶&#xff0c;這道題一直WA&#xff0c;然而本地我測了好幾組數據都是通過的&#xff0c;上網找了網友陳宇龍加油加油加油的AC的代碼&#xff0c;http://blog.csdn.net/Since_natural_ran/article/details/51742149&#xff0c;發現沒有什么不同。。。很無語。。 #include…

【Shashlik.EventBus】.NET 事件總線,分布式事務最終一致性簡介

分布式事務、CAP定理、事件總線&#xff0c;在當前微服務、分布式、集群大行其道的架構前提下&#xff0c;是不可逃避的幾個關鍵字&#xff0c;在此不會過多闡述相關的理論知識。Shashlik.EventBus就是一個基于.NET6的開源事件總線解決方案&#xff0c;同時也是分布式事務最終一…