题面

事实说明只会FFT板子是没有用的,还要把式子推成能用FFT/转化一下卷积的方式

虽然这个题不算难的多项式卷积

稍微化简一下可以发现实际是$q_i$和$\frac{1}{(i-j)^2}$在卷,然后每两项是在向下标差值的那项做贡献,而直接卷是向两项下标和的那项做贡献。于是把前半部分的$\frac{1}{(i-j)^2}$做成负的,后半段的做成正的,这样卷完后半段就是题目要求的东西。当然把一个序列反过来再卷也是对的

 #include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=;
const double pai=acos(-);
struct cpx
{
double x,y;
}a[N],b[N];
int n,m,nm,rev[N];
double Sin[M],Cos[M];
cpx operator + (cpx a,cpx b)
{
return (cpx){a.x+b.x,a.y+b.y};
}
cpx operator - (cpx a,cpx b)
{
return (cpx){a.x-b.x,a.y-b.y};
}
cpx operator * (cpx a,cpx b)
{
double x1=a.x,x2=b.x,y1=a.y,y2=b.y;
return (cpx){x1*x2-y1*y2,x1*y2+x2*y1};
}
int Log2(int len)
{
return (int)(log(len)/log()+0.5);
}
void prework()
{
register int i;
scanf("%d",&n),nm=n<<;
for(i=;i<n;i++) scanf("%lf",&a[i].x);
for(i=;i<n-;i++) b[i].x=(double)-/(n-i-)/(n-i-);
for(i=n;i<nm-;i++) b[i].x=(double)/(i-n+)/(i-n+);
m=; while(m<=nm) m<<=;
for(i=;i<=;i++)
Sin[i]=sin(*pai/(<<i)),Cos[i]=cos(*pai/(<<i));
for(i=;i<m;i++)
rev[i]=(rev[i>>]>>)+(i&)*(m>>);
}
void transform(cpx *c,int t)
{
register int i,j,k;
for(i=;i<m;i++)
if(rev[i]>i) swap(c[i],c[rev[i]]);
for(i=;i<=m;i<<=)
{
int len=i>>;
cpx omg={Cos[Log2(i)],Sin[Log2(i)]*t};
for(j=;j<m;j+=i)
{
cpx ori={,},tmp;
for(k=j;k<j+len;k++)
{
tmp=ori*c[k+len],ori=ori*omg;
c[k+len]=c[k]-tmp,c[k]=c[k]+tmp;
}
}
}
}
int main()
{
register int i;
prework(),transform(a,),transform(b,);
for(i=;i<m;i++) a[i]=a[i]*b[i];
transform(a,-);
for(i=n-;i<nm-;i++) printf("%f\n",a[i].x/m);
return ;
}

解题:ZJOI 2014 力的更多相关文章

  1. [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 ...

  2. 【BZOJ 3527】【ZJOI 2014】力

    代换一下变成多项式卷积,这里是的答案是两个卷积相减,FFT求一下两个卷积就可以啦 详细的题解:http://www.cnblogs.com/iwtwiioi/p/4126284.html #inclu ...

  3. 【ZJOI 2014】力

    Problem Description 给出 \(n\) 个数 \(q_i\),给出 \(F_j\) 的定义如下: \[F_j=\sum_{i<j} \frac{q_iq_j}{(i-j)^2} ...

  4. ZJOI 2014 星系调查(推导)

    题意 https://loj.ac/problem/2201 思路 说白了就是一条路径上有 \(n\) 个二维坐标,求一条直线使得所有点到此直线的距离和最小. 设这条直线为 \(y=kx+b\) ,距 ...

  5. php大力力 [050节] 兄弟连高洛峰 PHP教程 2014年[数据库、PDO教程]

    php大力力 [050节] 兄弟连高洛峰 PHP教程 2014年[数据库.PDO教程] 第14章 数据库252.[2014]兄弟连高洛峰 PHP教程14.1.1 复习数据库[已发布,点击下载]253. ...

  6. Facebook Hacker Cup 2014 Qualification Round 竞赛试题 Square Detector 解题报告

    Facebook Hacker Cup 2014 Qualification Round比赛Square Detector题的解题报告.单击这里打开题目链接(国内访问需要那个,你懂的). 原题如下: ...

  7. php大力力 [016节] 兄弟连高洛峰php教程(2014年 14章数据库章节列表)

    2015-08-25 php大力力016 兄弟连高洛峰php教程(2014年 14章数据库章节列表) [2014]兄弟连高洛峰 PHP教程14.1.1 复习数据库  15:58 [2014]兄弟连高洛 ...

  8. 2014 ACM/ICPC 鞍山赛区现场赛 D&amp;I 解题报告

    鞍山现场赛结束了呢-- 我们出的是D+E+I三道题-- 吾辈AC掉的是D和I两道,趁着还记得.先在这里写一写我写的两道水题D&I的解题报告吧^_^. D题的意思呢是说星云内有一堆排成一条直线的 ...

  9. Hackerrank 2020 February 2014 解题报告

    Hackerrank 2020 February 2014 解题报告 比赛链接 Sherlock and Watson (20分) 题意:给定一个数组,向右平移K次,然后有Q个询问,问第x位置上是几 ...

随机推荐

  1. halcon中关于文本的创建以及写入

    原文链接:http://blog.sina.com.cn/s/blog_61cc743001017nxr.html#FileName 1.open_file( : : FileName, FileTy ...

  2. BVT与冒烟测试

    [BVT的释义] BVT的全称是Build Verification Test.可以说这个全称就是BVT的定义了. BVT只验证build构建的成功与失败,不深入测试构建好的build的功能.性能等等 ...

  3. 哈夫曼(Huffman)树+哈夫曼编码

    前天acm实验课,老师教了几种排序,抓的一套题上有一个哈夫曼树的题,正好之前离散数学也讲过哈夫曼树,这里我就结合课本,整理一篇关于哈夫曼树的博客. 主要摘自https://www.cnblogs.co ...

  4. 在html中怎么格式化输出json字符串

    #今天的项目用到,看俊哥找到,特此记录下来 步骤: 1.在html页面中输入下面的标签,必须是在pre标签内输出格式才会生效: <pre id="songReqJson"&g ...

  5. input value="值栈的值"

    <input type="text" value="<s:property value="myp.begintime"/>" ...

  6. HDU 5434 Peace small elephant 状压dp+矩阵快速幂

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5434 Peace small elephant  Accepts: 38  Submissions: ...

  7. OSG学习:LOD、数据分页、动态调度

    LOD(level of detail):是指根据物体模型的结点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算.在OSG的场景结点组织结 ...

  8. linux学习笔记4

    查看当前系统还有哪些用户 who 字符计数 wc -l(line) 可以统计有多少行 -w(word) 可以统计有多少个单词 -c(character) 可以统计有多少个字符  切个字符 - 排序 l ...

  9. 理解promise 01

    原文地址: http://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html 用Javascript的小伙伴们,是时候承认了,关于 ...

  10. jumpserver的安装部署

    废话不说直接安装 1:安装数据库 这里是提前安装,也可以不安装,在安装jumpserver主程序的时候,他会询问你是否安装 yum -y install ncurses-devel cmake ech ...