【BZOJ 4734】【UOJ 269】【清华集训2016】 如何优雅地求和
来源:互联网 发布:莱州广电网络 编辑:程序博客网 时间:2024/05/02 06:11
题意:给定
老年选手石乐志看不出二项式展开的悲惨经历
【搞笑做法】
考虑多项式
设
设
于是多项式快速幂即可。。。。理论上这里是
然而这个题他多项式给的是点值。。。所以要这么做的话还得写个快速插值。。。
复杂度就变成了
要不是我不(lan)会(de)写(xie)快速插值可能就上这玩意了。。。
秉着【出题人一定不会写这么毒瘤的东西】的想法直接用点值来推。。。也能做。。而且复杂度更优秀了。。(当然是在给了点值的情况下。。。)
【正常(?)做法】
考虑
其中
于是只需要算
不太懂为啥
【主要代码】
int N , len;arr rev , wn , f , e;inline void init(int n , int m) { for (N = 1 , len = 0; N <= n + m; N <<= 1 , len ++); For (i , 0 , N) rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << (len - 1)); int g = Pow(G , (mod - 1) / N); wn[0] = 1; For (i , 1 , N) wn[i] = mul(wn[i - 1] , g);}inline void dft(int *a , int n , int v) { For (i , 0 , n) if (i < rev[i]) swap(a[i] , a[rev[i]]); for (int s = 2 , i = 1; s <= n; s <<= 1 , i ++) { int g = wn[1 << (len - i)]; for (int k = 0; k < n; k += s) { int w = 1; For (j , 0 , s / 2) { int u = a[k + j] , t = mul(w , a[k + j + s / 2]); a[k + j] = add(u , t) , a[k + j + s / 2] = dec(u , t); w = mul(w , g); } } } if (v == -1) { int w = Pow(n , mod - 2); For (i , 0 , n) a[i] = mul(a[i] , w); }}int n , m , x;arr frac , invF;void input() { n = rd() , m = rd() , x = rd(); frac[0] = 1; rep (i , 1 , m) frac[i] = mul(frac[i - 1] , i); invF[m] = Pow(frac[m] , mod - 2); per (i , m , 1) invF[i - 1] = mul(invF[i] , i); rep (i , 0 , m) f[i] = mul(rd() , invF[i]); rep (i , 0 , m) e[i] = (i & 1) ? mod - invF[i] : invF[i];}void solve() { init(m , m); dft(f , N , 1) , dft(e , N , 1); For (i , 0 , N) f[i] = mul(f[i] , e[i]); reverse(wn + 1 , wn + N); dft(f , N , -1); int ans = 0; int ff = 1 , tt = 1; rep (i , 0 , m) { int tmp = mul(ff , tt); tmp = mul(tmp , f[i]); ans = add(ans , tmp); ff = mul(ff , n - i); tt = mul(tt , x); } printf("%d\n" , ans);}
阅读全文
0 0
- 【BZOJ 4734】【UOJ 269】【清华集训2016】 如何优雅地求和
- BZOJ 4736/UOJ #274. 【清华集训2016】温暖会指引我们前行 LCT边权操作
- UOJ【清华集训2015】V
- UOJ#267 BZOJ4731【清华集训2016】魔法小程序
- UOJ 267 [清华集训2016]魔法小程序
- BZOJ4735 你的生命已如风中残烛 UOJ#273 【清华集训2016】
- uoj 279: [清华集训2016]温暖会指引我们前行
- UOJ#273. 【清华集训2016】你的生命已如风中残烛
- uoj#164. 【清华集训2015】V
- uoj#46. 【清华集训2014】玄学
- BZOJ4730 UOJ#266【清华集训2016】Alice和Bob又在玩游戏
- UOJ#274 BZOJ4736 【清华集训2016】温暖会指引我们前行
- UOJ#272. 【清华集训2016】石家庄的工人阶级队伍比较坚强
- uoj#274. 【清华集训2016】温暖会指引我们前行 //LCT
- UOJ#37.【清华集训2014】主旋律 状压DP
- [历史最值问题] UOJ #164 【清华集训2015】V
- UOJ #164. 【清华集训2015】V 线段树
- 2016清华集训滚粗记
- 周志华<机器学习>+斯坦福机器学习视频
- 比较全的正则表达式
- 报表导出
- 微服务框架Finagle介绍 Part2: 在Finagle中开发基于Http协议的应用
- E: Sub-process /usr/bin/dpkg returned an error code (1)解决方法
- 【BZOJ 4734】【UOJ 269】【清华集训2016】 如何优雅地求和
- struts2的action从request获取参数值的两种方式
- maltab下xlswrite时提示服务器出现意外情况的解决
- slack incoming webhook
- iOS Realm进阶
- iap支付总结(一次性消费购买)
- jquery中的bind(),live(),delegate(),on()绑定事件方式
- mariadb
- struts2 控制器