hdu5073 思維 方差 Galaxy

2021-08-08 02:23:32 字數 767 閱讀 5912

背景知識很強qwq

給定一些星星,你可以刪除k個,

每乙個星星

s=d*d.(d為每個星星距離質心的距離。),問你如何使sigma(s)最小。

展開公式得

(x1-zx)(x1-zx)+(x2-zx)(x2-zx)…

x1*x1+x2*x2+…. +(m-k)*zx*zx-2*sigma(x)*zx>.

並且發現這個結果和 區間的方差呈正相關,即越密集,越小。

於是列舉 連續的區間就行。。

#include 

using namespace std;

/* 思維

給定你n個點,要求你去掉k個點,使其留下的點

方差最小。

*/const int maxn=5e4+1000;

double a[maxn];

int main()

sort(a+1,a+m+1);

if(m==k)

double sum1=0;

double sum2=0;

for(int i=1;i<=m-k;i++)

double zx=sum1/(m-k);

double min1=sum2-2

*zx*sum1+(m-k)*zx

*zx;

for(int i=m-k+1;i<=m;i++)

printf("%.10f\n",min1);

}return

0;}

HDU 5073 Galaxy(數學公式)

解題思路 每乙個點的重量都相同,所以n個點的重心就在這n個點座標的平均數中,例如1,2,3的重心就在2。那麼移動k個點就直接移動到最終的重心上,他的d 2就不會有貢獻。只要列舉n k個長度的子串,找出最小值就好了。公式展開裡面會有一次方項和和二次方項和,這裡做字首和就可以了。wa了兩次,第一次沒有注...

hdu 2014鞍山賽區 5073 Galaxy

題意 就是給你 n 個數,代表n個星球的位置,每乙個星球的重量都為 1 開始的時候每乙個星球都繞著質心轉動,那麼質心的位置就是所有的星球的位置之和 星球的個數 現在讓你移動 k 個星球到任意位置 多個星球可以在同乙個位置並且所有的星球在同一直線上 移動之後那麼它們質心的位置就可能發生變化,求 i s...

HDU6370(思維 搜尋

題意 現在有n個人,每個人要麼是第一類 說的全是真話 要麼是第二類 說的可能是假話。每乙個人x都指認另乙個人y是第一類或第二類人。請問在所有合法的情況下,有多少人必定是第一類人 有多少人必定是第二類人?思路 首先題解送上 當然其實沒怎麼懂。我也不是這麼寫的 主要點 然後再xjb補充一下吧,以防以後看...