背景知識很強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補充一下吧,以防以後看...