洛谷P5075 JSOI2012 分零食

2022-05-23 21:54:11 字數 1824 閱讀 9207

題目大意:有$m(m\leqslant10^8)$個人站成一排,有$n(n\leqslant10^4)$個糖果,若第$i$個人沒有糖果,那麼第$i+1$個人也沒有糖果。乙個人有$x$個糖果會獲得快樂值$v(x)$。

$$v(x)=

\begin

ax^2+bx+c&(x>1)\\

1&(x=1)

\end

$$乙個方案的價值為$\prod\limits_^mv(s_i)$($s_i$為第$i$個人得到的糖果數)。問所有方案的價值和,對$mod(mod\leqslant255)$取模

題解:令$f(x)=\sum\limits_^v(i)x^i$,那麼$k$個人全部得到糖果的方案數是$[x^n]f^k(x)$。

$$\begin

ans&=[x^n]\sum\limits_^mf^i(x)\\

&=[x^n]\sum\limits_^mf^i(x)\\

&=[x^n]\dfrac(x)}

\end

$$注意這裡的模數不是質數,但很小,可以用一模$ntt$,注意求逆部分,需要多把點值轉成係數,因為負數無法表示。

卡點:$ntt$預處理部分度數沒有加,調了乙個上午。。。

c++ code:

#include #include #include #define maxn 32768

const int mod = 998244353;

namespace math

inline int inv(int x)

}inline void reduce(int &x)

inline void clear(register int *l, const int *r)

int n, m, a, b, c, pmod;

namespace poly

inline void ntt(int *a, const int op = 1)

} if (!op)

} inline void inv(int *a, int *b, int n)

static int c[n];

const int len = n + 1 >> 1;

inv(a, b, len);

init(n + n - 1);

std::copy(a, a + n, c), clear(c + n, c + lim);

ntt(c), ntt(b);

for (register int i = 0; i < lim; ++i) c[i] = static_cast(c[i]) * b[i] % mod;

ntt(c, 0), clear(c + n, c + lim);

for (int *i = c; i != c + n; ++i) *i = pmod - *i % pmod;

c[0] += 2, ntt(c);

for (int i = 0; i < lim; ++i) b[i] = static_cast(b[i]) * c[i] % mod;

ntt(b, 0);

for (int *i = b; i != b + n; ++i) *i %= pmod;

clear(b + n, b + lim);

} inline void pw(int *a, int *b, int n, int p)

if (p >>= 1)

} }#undef n

}int f[maxn], a[maxn], b[maxn];

int main()

洛谷P4049 JSOI2007 合金

某公司加工一種由鐵 鋁 錫組成的合金。他們的工作很簡單。首先進口一些鐵鋁錫合金原材料,不同種類的原材料中鐵鋁錫的比重不同。然後,將每種原材料取出一定量,經過融解 混合,得到新的合金。新的合金的鐵鋁錫比重為使用者所需要的比重。現在,使用者給出了 n 種他們需要的合金,以及每種合金中鐵鋁錫的比重。公司希...

洛谷P4049 JSOI2007 合金 題解

題目鏈結 首先,材料的前兩個屬性可以唯一確定乙個材料,合金的前兩個樹形也可以唯一確定乙個材料。那麼材料和合金都可以被看成平面上的點 a i,b i 或 d i,e i 不難發現,一些材料能表示出一種合金當且僅當這個合金 在平面上的點 在選取的材料 在平面上的點 組成的凸包內。不難發現,選取的點凸包上...

洛谷 P2145 JSOI2007 祖碼

一道特別毒瘤的題,好像目前沒有完全的正解,只有乙個比較優的解法 f i j 表示從i j所用的最小數量.首先,去重,就是將所有連續的相同的點縮成乙個點,sum i 表示縮點後新圖第i個位置有幾個點.如果g i g j 加起來的數量大於等於三 sum i sum j 3 則f i j f i 1 j ...