题面

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

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

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

  1. #include<cmath>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. const int N=,M=;
  7. const double pai=acos(-);
  8. struct cpx
  9. {
  10. double x,y;
  11. }a[N],b[N];
  12. int n,m,nm,rev[N];
  13. double Sin[M],Cos[M];
  14. cpx operator + (cpx a,cpx b)
  15. {
  16. return (cpx){a.x+b.x,a.y+b.y};
  17. }
  18. cpx operator - (cpx a,cpx b)
  19. {
  20. return (cpx){a.x-b.x,a.y-b.y};
  21. }
  22. cpx operator * (cpx a,cpx b)
  23. {
  24. double x1=a.x,x2=b.x,y1=a.y,y2=b.y;
  25. return (cpx){x1*x2-y1*y2,x1*y2+x2*y1};
  26. }
  27. int Log2(int len)
  28. {
  29. return (int)(log(len)/log()+0.5);
  30. }
  31. void prework()
  32. {
  33. register int i;
  34. scanf("%d",&n),nm=n<<;
  35. for(i=;i<n;i++) scanf("%lf",&a[i].x);
  36. for(i=;i<n-;i++) b[i].x=(double)-/(n-i-)/(n-i-);
  37. for(i=n;i<nm-;i++) b[i].x=(double)/(i-n+)/(i-n+);
  38. m=; while(m<=nm) m<<=;
  39. for(i=;i<=;i++)
  40. Sin[i]=sin(*pai/(<<i)),Cos[i]=cos(*pai/(<<i));
  41. for(i=;i<m;i++)
  42. rev[i]=(rev[i>>]>>)+(i&)*(m>>);
  43. }
  44. void transform(cpx *c,int t)
  45. {
  46. register int i,j,k;
  47. for(i=;i<m;i++)
  48. if(rev[i]>i) swap(c[i],c[rev[i]]);
  49. for(i=;i<=m;i<<=)
  50. {
  51. int len=i>>;
  52. cpx omg={Cos[Log2(i)],Sin[Log2(i)]*t};
  53. for(j=;j<m;j+=i)
  54. {
  55. cpx ori={,},tmp;
  56. for(k=j;k<j+len;k++)
  57. {
  58. tmp=ori*c[k+len],ori=ori*omg;
  59. c[k+len]=c[k]-tmp,c[k]=c[k]+tmp;
  60. }
  61. }
  62. }
  63. }
  64. int main()
  65. {
  66. register int i;
  67. prework(),transform(a,),transform(b,);
  68. for(i=;i<m;i++) a[i]=a[i]*b[i];
  69. transform(a,-);
  70. for(i=n-;i<nm-;i++) printf("%f\n",a[i].x/m);
  71. return ;
  72. }

解题: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. 十几行代码带你用Python批量实现txt转xls,方便快捷

    前天看到后台有一兄弟发消息说目前自己有很多txt 文件,领导要转成xls文件,问用python怎么实现,我在后台简单回复了下,其实完成这个需求方法有很多,因为具体的txt格式不清楚,当然如果是有明确分 ...

  2. Spring学习(3):Spring架构(转载)

    1. Spring架构图 核心容器:包括Core.Beans.Context.EL模块. ●Core模块:封装了框架依赖的最底层部分,包括资源访问.类型转换及一些常用工具类. ●Beans模块:提供了 ...

  3. Parcel 打包器简单使用记录

    本文是构造 UI 轮子过程中搭建项目初始化时使用 Parcel 作为打包器的简要使用记录. 安装 参考 官方文档 使用 npm 进行 parcel-bundler 的安装. npm i -D parc ...

  4. Java Basic&Security Tools

    JDK Tools and Utilities Basic Tools These tools are the foundation of the JDK. They are the tools yo ...

  5. 大数据-spark-hbase-hive等学习视频资料

    不错的大数据spark学习资料,连接过期在评论区评论,再给你分享 https://pan.baidu.com/s/1ts6RNuFpsnc39tL3jetTkg

  6. CF刷刷水题找自信 2

    CF 1114A  Got Any Grapes(葡萄)? 题目意思:给三个人分葡萄,三个人对葡萄的颜色有一些要求,问所准备的三种颜色的葡萄能否满足三人的要求. 解题意思:直接按条件判断即可. #in ...

  7. Python:生成器的简单理解

    一.什么是生成器 在Python中,由于受到内存的限制,列表容量肯定是有限的.例如我们创建一个包含一亿个元素的列表,Python首先会在内存中开辟足够的空间来存储这个包含一亿个元素的列表,然后才允许用 ...

  8. Rsyslog-legacy(旧版本语法)配置说明及举例

    1. RULES-书写规则 格式:日志设备(类型).日志级别             日志处理方式 (1)日志类型分类 auth pam产生的日志 authpriv ssh,ftp等登录信息的验证信息 ...

  9. 初识ES6 解构

    1.数组的解构 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 例子: let [a, b, c] = [1, 2, 3]; console.log(a);//1cons ...

  10. CCF——数列分段201509-1

    问题描述 给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段? 输入格式 输入的第一行包含一个整数n,表示数列中整数的个数. 第二行包含n个整数a1, a2, …, an,表示 ...