【BZOJ 3527】【ZJOI 2014】力
代换一下变成多项式卷积,这里是的答案是两个卷积相减,FFT求一下两个卷积就可以啦
详细的题解:http://www.cnblogs.com/iwtwiioi/p/4126284.html
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 500003;
const double Pi = acos(- 1.0);
struct cp {
double r, i;
cp (double _r = 0.0, double _i = 0.0) : r(_r), i(_i) {}
cp operator + (const cp &x) const {return cp(r + x.r, i + x.i);}
cp operator - (const cp &x) const {return cp(r - x.r, i - x.i);}
cp operator * (const cp &x) const {return cp(r * x.r - i * x.i, r * x.i + i * x.r);}
};
int rev[N];
cp A[N];
void DFT(cp *a, int n, int flag) {
for(int i = 0; i < n; ++i) A[rev[i]] = a[i];
for(int i = 0; i < n; ++i) a[i] = A[i];
for(int m = 2; m <= n; m <<= 1) {
cp wn(cos(2.0 * Pi / m * flag), sin(2.0 * Pi / m * flag));
int mid = m >> 1;
for(int i = 0; i < n; i += m) {
cp w(1.0);
for(int j = 0; j < mid; ++j) {
cp u = a[i + j], t = a[i + j + mid] * w;
a[i + j] = u + t;
a[i + j + mid] = u - t;
w = w * wn;
}
}
}
if (flag == -1)
for(int i = 0; i < n; ++i)
a[i].r /= n;
}
void init(int &n) {
int k = 1, L = 0;
for(; k < n; k <<= 1, ++L);
n = k;
for(int i = 0; i < n; ++i) {
int t = i, ret = 0;
for(int j = 0; j < L; ++j)
ret <<= 1, ret |= (t & 1), t >>= 1;
rev[i] = ret;
}
}
void FFT(double *x, double *y, cp *a, cp *b, int len) {
for(int i = 0; i < len; ++i) a[i].r = x[i], a[i].i = 0.0;
for(int i = 0; i < len; ++i) b[i].r = y[i], b[i].i = 0.0;
DFT(a, len, 1); DFT(b, len, 1);
for(int i = 0; i < len; ++i) a[i] = a[i] * b[i];
DFT(a, len, -1);
}
cp a[N], b[N];
int n, len;
double g[N], q[N], f[N], ans[N];
int main() {
scanf("%d", &n); len = (n << 1) + 1;
init(len);
for(int i = 1; i <= n; ++i) scanf("%lf", &q[i]);
for(int i = 1; i <= n; ++i) g[i] = 1.0 / i / i;
for(int i = 0; i < n; ++i) f[i] = q[n - i]; FFT(q, g, a, b, len);
for(int i = 1; i <= n; ++i) ans[i] = a[i].r;
FFT(f, g, a, b, len);
for(int i = 1; i <= n; ++i) ans[i] -= a[n - i].r;
for(int i = 1; i <= n; ++i) printf("%.3lf\n", ans[i]); return 0;
}
题面如下,BZOJ上没有题面喔:
Description
给出n个数qi,给出Fj的定义如下:
令Ei=Fi/qi,求Ei.
Input
第一行一个整数n。
接下来n行每行输入一个数,第i行表示qi。
Output
n行,第i行输出Ei。
与标准答案误差不超过1e-2即可。
Sample Input
5
4006373.885184
15375036.435759
1717456.469144
8514941.004912
1410681.345880
Sample Output
-16838672.693
3439.793
7509018.566
4595686.886
10903040.872
Hint
对于30%的数据,n≤1000。
对于50%的数据,n≤60000。
对于100%的数据,n≤100000,0<qi<1000000000。
Source
感谢nodgd放题
【BZOJ 3527】【ZJOI 2014】力的更多相关文章
- [ZJOI 2014]力
Description 给出n个数qi,给出Fj的定义如下: $$F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_{i>j}\frac{q_i ...
- 解题:ZJOI 2014 力
题面 事实说明只会FFT板子是没有用的,还要把式子推成能用FFT/转化一下卷积的方式 虽然这个题不算难的多项式卷积 稍微化简一下可以发现实际是$q_i$和$\frac{1}{(i-j)^2}$在卷,然 ...
- BZOJ 3527 力 | FFT
BZOJ 3527 力 | 分治 题意 给出数组q,$E_i = \sum_{i < j} \frac{q_i}{(i - j) ^ 2} - \sum_{i > j} \frac{q_i ...
- [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)
[BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...
- [BZOJ 1412][ZJOI 2009] 狼和羊的故事
题目大意 有一个 (n times m) 的网格,每一个格子上是羊.狼.空地中的一种,羊和狼可以走上空地.现要在格子边上建立围栏,求把狼羊分离的最少围栏数. (1 leqslant n, ; m le ...
- 【BZOJ 3527】 3527: [Zjoi2014]力 (FFT)
3527: [Zjoi2014]力 Time Limit: 30 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 2003 Solved: 11 ...
- BZOJ 3527: [Zjoi2014]力
Description 求 \(E_i=\sum _{j=0}^{i-1} \frac {q_j} {(i-j)^2}-\sum _{j=i+1}^{n-1} \frac{q_j} {(i-j)^2} ...
- BZOJ 3527: [ZJOI2014]力(FFT)
BZOJ 3527: [ZJOI2014]力(FFT) 题意: 给出\(n\)个数\(q_i\),给出\(Fj\)的定义如下: \[F_j=\sum \limits _ {i < j} \fra ...
- ●BZOJ 3527 [Zjoi2014]力
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3527 题解: FFT求卷积. $$\begin{aligned}E_i&=\frac ...
随机推荐
- 怎么解决ZBrush保存历史记录太多问题
经常有用户反映说ZBrush ®保存历史记录太多了,导致文件太大了!模型已经是降低级别保存了,在保存历史记录的时候还是很慢很慢,不知道怎么才能减少ZBrush保存的历史步骤的多少.针对这一问题,小编统 ...
- NOIP2004合并果子
题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...
- AC日记——密码翻译 openjudge 1.7 09
09:密码翻译 总时间限制: 1000ms 内存限制: 65536kB 描述 在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍 ...
- uva10160 Servicing Stations
The input consists of more than one description of town (but totally, less than ten descriptions). E ...
- 用javascript实现html元素的增删查改[xyytit]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- http协议(七)通用首部字段
通用首部字段的意思,就是:请求和响应报文双方都会使用的首部 1.Cache-Control 通过指定它的指令,能操作缓存的工作机制 指令参数是可选的,多个指令通过“,”分隔 Cache-Control ...
- P1835 素数密度_NOI导刊2011提高(04)
题目描述 给定区间[L,R](L≤R≤2147483647,R-L≤1000000),请计算区间中素数的个数. 输入输出格式 输入格式: 两个数L和R. 输出格式: 一行,区间中素数的个数. 输入输出 ...
- C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 多系统开发接口 - 苹果客户端开发接口
最近工作上需要,给苹果客户端开发接口,实现集中统一的用户管理,下面是接口调用参考. 1: 获取OpenId? http://127.0.0.1/GetOpenId.ashx?username=Admi ...
- 我使用celery以及docker部署遇到的问题
首先我本机测试时没有问题的,但是在线上docker中,任务一直显示 "Sending due task".超时的任务是 django orm update 操作,本地不会出现这样的 ...
- addShutdownHook的用法
addShutdownHook作为一个正常关闭Java程序的途径,其实是非常有用的. 有JDK文档可知,当程序正常退出,或者为响应用户中断而终止虚拟机的时候,就会调用里面的线程,来作最后的退出处理. ...