hdu 4465 Candy log壓縮大數

2021-06-26 23:12:18 字數 544 閱讀 5529

期望公式很好推,要注意空的盒子總共被取了n+1次,而不是n次。

但是在n很大的時候公式中的組合數會巨大,而且p的n次方也會非常小。這樣就要像乙個方法壓縮他們,就是對這些數取log,然後再用exp函式還原(e的n次方)

對於組合數,先預處理出1到2e5這些數階乘的log,再用這些階乘去算組合數。

對於p的n次方,它的log等於n*log(p)

**:#include #include #include #include using namespace std;

#include #define maxn 400005

double f[maxn];

double c[maxn];

int n;

double p;

void init()

}double pow(double p,int n)

int main(){

init();

int kase=1;

while(~scanf("%d%lf",&n,&p)){

for(int i=0;i

hdu 4770 狀壓 列舉

長記性了,以後對大陣列初始化要注意了!140ms 原來是對vis陣列進行每次初始化,每次初始化要200 200的複雜度 一直超時,發現沒必要這樣,直接標記點就行了,只需要乙個15的陣列用來標記,vis陣列用來對映座標就行了 然後就是暴力加了一點優化,下面沒有加優化。include include d...

HDU2489 狀壓列舉

題意 給你n個點的圖,然後讓你在圖里挑m個點,達到sumedge sumnode最小 思路 由於資料範圍小,狀壓列舉符合m個點的狀態,我是用vactor存了結點位置,也記錄了結點的sum值,然後跑一發最小生成樹就可以知道sumedge,這裡判斷可以利用乘法,然後更新乙個狀態就好了 include u...

HDU2489 狀壓列舉

題意 給你n個點的圖,然後讓你在圖里挑m個點,達到sumedge sumnode最小 思路 由於資料範圍小,狀壓列舉符合m個點的狀態,我是用vactor存了結點位置,也記錄了結點的sum值,然後跑一發最小生成樹就可以知道sumedge,這裡判斷可以利用乘法,然後更新乙個狀態就好了 include u...