Polynomial(2019南昌邀请赛)(拉格朗日插值)
生活随笔
收集整理的這篇文章主要介紹了
Polynomial(2019南昌邀请赛)(拉格朗日插值)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Polynomial
思路
題目給的是一個nnn次多項式,要我們求∑i=lr\sum\limits_{i = l} ^{r}i=l∑r?,也就是一個累加的形式,容易想到轉換成求前綴和。
所以我們考慮求前綴和,容易得到這個多項式的前綴和一定是≥n&≤n+1\geq n \& \leq n + 1≥n&≤n+1次的多項式,
所以我們必須最少有n+2n + 2n+2個前綴和才能推導,所以我們先通過f(0)?>f(n)f(0) -> f(n)f(0)?>f(n)得到f(n+1)f(n + 1)f(n+1),
然后求個前綴和,再跑mmm次拉個朗日插值得到mmm組的詢問。
由于這是一個xxx連續取值的形式,所以我們可以預處理出前綴積,后綴積,以及階乘逆元,然后即可O(n)O(n)O(n)求得答案。
代碼
/*Author : lifehappy */ #pragma GCC optimize(2) #pragma GCC optimize(3) #include <bits/stdc++.h>using namespace std;typedef long long ll;const int inf = 0x3f3f3f3f; const double eps = 1e-7;const int N = 1e3 + 10, mod = 9999991;ll y[N], pre[N], suc[N], fac[N], inv[N], k, m;ll quick_pow(ll a, int n) {ll ans = 1;while(n) {if(n & 1) ans = ans * a % mod;a = a * a % mod;n >>= 1;}return ans; }ll solve(ll n) {pre[0] = suc[k + 2] = 1;for(int i = 1; i <= k + 1; i++) {pre[i] = 1ll * pre[i - 1] * (n - i) % mod;}for(int i = k + 1; i >= 1; i--) {suc[i] = 1ll * suc[i + 1] * (n - i) % mod;}ll ans = 0;for(int i = 1; i <= k + 1; i++) {ll a = 1ll * y[i] * pre[i - 1] % mod * suc[i + 1] % mod, b = 1ll * inv[i - 1] * inv[k + 1 - i] % mod;if((k + 1 - i) & 1) b *= -1;ans = (ans + 1ll * a * b % mod + mod) % mod;}return ans; }int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);fac[0] = inv[0] = 1;for(int i = 1; i < N; i++) {fac[i] = 1ll * fac[i - 1] * i % mod;}inv[N - 1] = quick_pow(fac[N - 1], mod - 2);for(int i = N - 2; i >= 1; i--) {inv[i] = inv[i + 1] * (i + 1) % mod;}int T;scanf("%d", &T);while(T--) {scanf("%lld %lld", &k, &m);for(int i = 1; i <= k + 1; i++) {scanf("%lld", &y[i]);}y[k + 2] = solve(k + 2);k++;for(int i = 1; i <= k + 1; i++) {y[i] = (y[i] + y[i - 1]) % mod;}for(int i = 1; i <= m; i++) {int l, r;scanf("%d %d", &l, &r);printf("%lld\n",((solve(r + 1) - solve(l)) % mod + mod) % mod);}}return 0; }總結
以上是生活随笔為你收集整理的Polynomial(2019南昌邀请赛)(拉格朗日插值)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欧拉心算(反演 + 积性函数筛)
- 下一篇: 医用酒精能喝吗