[ZJOI2014] 力

18人阅读 评论(0) 收藏 举报
分类:

题目描述:

定义
fi=i<jqiqj(ij)2i>jqiqj(ij)2
Ei=fi/qi

题目分析:

生成函数第一题~
Ei=i<jqj(ij)2i>jqj(ij)2

gi=(i2)
那么
Ei=i<jqjgiji>jqjgji
第一项很明显就是个卷积了,随便做,主要是后面那项如何搞呢?
pi=qni+1
Ei=i<jqjgiji<jpjgij
那么后面也是个卷积了…
随便搞就行了

题目链接:

BZOJ 3527
Luogu 3338

Ac 代码:

// luogu-judger-enable-o2
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <iostream>
#include <cstring>
const double PI=acos(-1);
const int maxm=410000;
struct complex{
    double real,imag;
    complex(){};
    complex(double _real,double _imag):real(_real),imag(_imag){}
};
inline complex operator + (complex x,complex y){return (complex){x.real+y.real,x.imag+y.imag};}
inline complex operator - (complex x,complex y){return (complex){x.real-y.real,x.imag-y.imag};}
inline complex operator * (complex x,complex y){return (complex){x.real*y.real-x.imag*y.imag,x.real*y.imag+y.real*x.imag};}
int rev[maxm];
complex A1[maxm],A2[maxm],g[maxm];
double q1[maxm],q2[maxm];
inline void FFT(complex *a,int n,int f)
{
    for(int i=0;i<n;i++) if(i<rev[i]) std::swap(a[i],a[rev[i]]);
    for(int i=1;i<n;i<<=1)
    {
        complex wn=(complex){std::cos(PI/i),f*std::sin(PI/i)};
        for(int j=0;j<n;j+=(i<<1))
        {
            complex w=(complex){1,0};
            for(int k=0;k<i;k++,w=w*wn)
            {
                complex x=a[j+k];
                complex y=a[i+j+k]*w;
                a[j+k]=x+y;
                a[i+j+k]=x-y;
            }
        }
    }
    if(f==1) return;
    for(int i=0;i<n;i++) a[i].real=a[i].real/(double)n;
}
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
     scanf("%lf",&q1[i]),q2[n-i-1]=q1[i];
    int len=0,s;
    for(s=1;s<=2*n;s<<=1) len++;
    //printf("%d\n",s);
    for(int i=0;i<s;i++) rev[i]=(rev[i>>1]>>1)|((i&1)<<(len-1));
    for(int i=0;i<n;i++) A1[i]=(complex){q1[i],0},A2[i]=(complex){q2[i],0};
    g[0]=(complex){0,0};
    for(int i=1;i<n;i++) g[i]=(complex){(double)1.0/i/i,0};
    FFT(A1,s,1),FFT(A2,s,1),FFT(g,s,1);
    for(int i=0;i<s;i++) A1[i]=A1[i]*g[i],A2[i]=A2[i]*g[i];
    FFT(A1,s,-1),FFT(A2,s,-1);
    for(int i=0;i<n;i++) printf("%.3lf\n",A1[i].real-A2[n-i-1].real);
    return 0;
}
查看评论

[ZJOI2014]力 题解

FFT
  • WT_cnyali
  • WT_cnyali
  • 2017-07-23 19:51:25
  • 440

【ZJOI2014】力

DescriptionSolution这是第一次打FFT,对于一个新算法,有模板题可以打还是吼开心的。 很明显的要把上面的><和qi给化掉。然后因为有要往后取得,所以把原序列翻转一下后面的放到前面来...
  • doyouseeman
  • doyouseeman
  • 2017-02-16 15:41:52
  • 679

BZOJ 3527: [Zjoi2014]力

题目地址:http://www.lydsy.com/JudgeOnline/problem.php?id=3527 题目大意:见原题。 算法讨论:         设A[i]=q[i],B[...
  • u013703661
  • u013703661
  • 2014-05-05 16:06:12
  • 2966

洛谷 P3338 [ZJOI2014]力(bzoj P3527 [ZJOI2014]力)

传送门 很难受,不会输公式,于是手写了一份,比较丑,希望不要介意。fft的套路果然深。。照着网上模板学习了一下。。 代码: #include #include #include #inc...
  • Leo_Riddle
  • Leo_Riddle
  • 2017-07-14 15:43:38
  • 166

[bzoj3527][ZJOI2014]力

3527: [Zjoi2014]力Time Limit: 30 Sec Memory Limit: 256 MBSec Special Judge Submit: 863 Solved: 53...
  • FZHvampire
  • FZHvampire
  • 2016-01-10 21:11:18
  • 493

BZOJ3527: [Zjoi2014]力

题目大意:Fj=∑ijqiqj(i−j)2F_{j}=\sum\limits_{ij}\frac{q_{i}q_{j}}{(i-j)^2} 令Ei=Fi/qiE_{i}=F_{i}/...
  • commonc
  • commonc
  • 2016-08-12 09:33:44
  • 352

【BZOJ 3527】 [Zjoi2014]力

FFT模板题~
  • Regina8023
  • Regina8023
  • 2015-04-07 01:00:36
  • 1337

【BZOJ】【P3527】【ZJOI2014】【力】【题解】【FFT】

传送门 www.lydsy.com/JudgeOnline/problem.php?id=3527
  • u012732945
  • u012732945
  • 2014-05-09 21:03:56
  • 1290

BZOJ 3527 [Zjoi2014]力 FFT

BZOJ 3527 [Zjoi2014]力 FFT
  • wzq_QwQ
  • wzq_QwQ
  • 2015-09-01 11:33:33
  • 2105

BZOJ 3527[Zjoi2014]力 FFT

题目链接:BZOJ3527 第一次学会如何写数学公式,虽然只是简单的入门,但还是有点激动。。。 首先这个题很明显是多项式乘法,但是强迫症的我过于纠结下标,以至于困惑了好久,简直SB。注:下表均从0...
  • qq_33929112
  • qq_33929112
  • 2017-01-18 01:19:21
  • 422
    个人资料
    持之以恒
    等级:
    访问量: 6万+
    积分: 7056
    排名: 4048
    文章分类
    最新评论