傳送門
發現 $a$ 不大,又允許較大的誤差,考慮亂搞
考慮求出每個位置的答案,因為有 $1e5$ 個位置,所以每個位置差不多可以計算 $100$ 次貢獻
所以把每個可以貢獻的位置盡量均勻分成 $100$ 個塊,同乙個塊內答案一起算
本來乙個位置的貢獻是 $m[i]m[j]/(i-j)$ ,那現在乙個塊的貢獻就可以看成 $m[i](sum[r]-sum[l-1])/(i-mid)$,就是把一段的貢獻放在一起算,下標就取中位數
這樣誤差就在 $5\%$ 以內了..
#include#include#include
#include
#include
using
namespace
std;
typedef
long
long
ll;typedef
double
db;inline
intread()
while(ch>='
0'&&ch<='
9')
return x*f;
}const
int n=1e5+7,t=100
;const db eps=1e-8
;int
n,a[n],sum[n];
db a,ans[n];
intmain()
int l=1,r,p=r/t,t=r%t;
for(int j=1;j<=t;j++)
}for(int i=1;i<=n;i++) printf("
%.6lf\n
",ans[i]);
return0;
}
HNOI2008 遙遠的行星
直線上n顆行星,x i處有行星i,行星j受到行星i的作用力,當且僅當i aj.此時j受到作用力的大小為 fi j mi mj j i 其中a為很小的常量,故直觀上說每顆行星都只受到距離遙遠的行星的作用。請計算每顆行星的受力,只要結果的相對誤差不超過5 即可.輸入格式 第一行兩個整數n和a.1 n 1...
bzoj1011 HNOI2008 遙遠的行星
bzoj1011 hnoi2008 遙遠的行星 emmm玄學誤差題 之前有做過一道min hash的trick題,有空整理一下 坑 a的上限0.35 f i sum frac 暴力複雜的 n 0.35n 過不掉對於乙個i來說若可以 o1 求出 sum frac i a 的近似值 就可利用m的字首和o...
BZOJ1011 HNOI2008 遙遠的行星
bzoj1011 hnoi2008 遙遠的行星 直線上n顆行星,x i處有行星i,行星j受到行星i的作用力,當且僅當i aj.此時j受到作用力的大小為 fi j mi mj j i 其中a為很小的常量,故直觀上說每顆行星都只受到距離遙遠的行星的作用。請計算每顆行星的受力 只要結果的相對誤差不超過5 ...