BZOJ 3434 Wc2014 時空穿梭

2022-05-11 23:22:57 字數 2320 閱讀 8850

題意:n維座標中要找c個點使得c個點在一條線上且每一維的座標單調遞增且不能超過每一維限定的值m[i](n<=11, 2<=c<=20, m[i]<=100000)

#include using namespace std;

const int n=100005, md=10007;

int c[n][19], g[21][n], f[21][12][n], a[12], p[n], pcnt, mu[n], mn;

bool np[n];

inline void check(int &x)

void init()

mu[t]=-mu[i];

} }c[0][0]=1;

for(int i=1; i<=mn; ++i)

for(int c=2; c<=20; ++c)

for(int i=1; i<=mn; ++i)

for(int j=i, k=1; j<=mn; j+=i, ++k)

g[c][j]+=c[i-1][c-2]*mu[k], check(g[c][j]);

for(int i=1; i<=mn; ++i)

for(int c=2; c<=20; ++c)

}}int nn[1005], cc[1005], mm[1005][12], m[12], n, c;

typedef long long ll;

inline void cal(const int &xx)

}int main()

ans= & \sum_^ \sum_^ (m[1]-i)(m[2]-j) \binom \\

= & \sum_^ \sum_^ \sum_^ [(i, j)=1] (m[1]-id)(m[2]-jd) \binom \\

\end$$設

$$ f(d) = \sum_^ \sum_^

[(i, j)=1] (m[1]-id)(m[2]-jd) $$

$$ f(d) = \sum_^ \sum_^

(m[1]-id)(m[2]-jd) $$

$f(d)$計算的是$(i, j)=kd$時情況,$f(d)$計算的是$(i, j)=d$時的情況,所以

$$ f(d) = \sum_ f(n) $$

那麼就能反演啦...即

$$ f(d) = \sum_ \mu ( \frac ) f(n) $$

最後推得:

$$ans = \sum_^ \left( \left \lfloor \frac \right \rfloor m[1] - i \frac \right \rfloor ( \left \lfloor \frac \right \rfloor + 1 ) } \right) \left( \left \lfloor \frac \right \rfloor m[2] - i \frac \right \rfloor ( \left \lfloor \frac \right \rfloor + 1 ) } \right) \sum_ \mu ( \frac ) \binom

$$發現後邊和$m$是無關的= =,因此拓展就是將前邊的東西合起來= =,即

$$ans = \sum_^ \prod_^ \left( \left \lfloor \frac \right \rfloor m[j] - i \frac \right \rfloor ( \left \lfloor \frac \right \rfloor + 1 ) } \right) \sum_ \mu ( \frac ) \binom$$設

$$ g(i) = \sum_ \mu ( \frac ) \binom $$

然後$o(nlnn)$的暴力求出$g(i)$你總會的吧= =

但是現在關鍵是答案裡面有個$i$的乘法因子 qaq否則就能直接出解了..

可是發現這樣乘起來是關於$i$的多項式...那麼設係數向量$a$,且僅當$ \left \lfloor \frac \right \rfloor 不變時 $,有

$$\sum_^ a_ji^j =

\prod_^ \left( \left \lfloor \frac \right \rfloor m[j] - i \frac \right \rfloor ( \left \lfloor \frac \right \rfloor + 1 ) } \right)

$$最後原式變為

$$\begin

ans_x

= & \sum_^ \sum_^ a_ji^j g(i) \\

= & \sum_^ a_j \sum_^ i^j g(i) \\

\end

$$然後暴力預處理你怕不怕= =

時間複雜度為:$o(cmlog(n)+tn^3\sqrt)$

BZOJ 2595 Wc2008 遊覽計畫

啊 斯坦納樹 好像很厲害啊 反正我之前不會。其實不知道實用性怎麼樣 畢竟複雜度不小。大概過程就是乙個狀壓dp spfa 列舉狀態 從小狀態更新大狀態 再對當前狀態做一次像spfa一樣的鬆弛操作 下面這個人講的不錯 可以去看看 為什麼我的 又那麼短 有點擔心優美度了 有誰提一下建議嗎2333 我覺得還...

BZOJ 3052 wc2013 糖果公園

蒟蒻去做糖果公園了qaq 講道理速度能排rk11很開心啊 其實前人之述備矣 複雜度分析 推薦一波棟爺爺的題解 帶修改莫隊其實就是多一維時間 所以你需要資瓷修改和撤銷修改 然後就跟沒修改的莫隊其實差不多了 關於樹上莫隊 很明顯就是用dfs序這個套路 發現出現次數為奇數次的才會算到 棟老師題解那裡也有說...

BZOJ 2595 Wc2008 遊覽計畫

n m 的網格,如果 a 0 則表示景點,否則表示這裡的需要的志願者人數。求一種安排志願者的方案使得所有景點連通且志願者最少。本題可以插頭dp,然而有乙個東西叫斯坦納樹,來學習學習。令 f i,j,s 表示 i,j 為根,連通性為 s 的最少志願者。則有轉移 f i,j,s min begin f ...