首页 > 其他分享 >洛谷 P3723 [AH2017/HNOI2017]礼物

洛谷 P3723 [AH2017/HNOI2017]礼物

时间:2023-06-01 13:55:05浏览次数:35  
标签:洛谷 MAXN int rhs P3723 Complex HNOI2017 const sum

由题面可得:

\[E_j = \sum_{i = 1}^{j - 1} \frac{q_i}{(i - j)^2} - \sum_{i = j + 1}^{n} \frac{q_i}{(i - j)^2} \]

令 \(q_0 = 0\),并将没有意义的分式的值视为 \(0\),则有:

\[E_j = \sum_{i = 0}^j \frac{q_i}{(i - j)^2} - \sum_{i = j}^n \frac{q_i}{(i - j)^2} \]

令 \(A(i) = q_i, B(i) = \dfrac 1{i^2}\),则原式可化为:

\[E_j = \sum_{i = 0}^j[A(i) \times B(j - i)] - \sum_{i = 0}^{n - j}[A(i + j) \times B(i)] \]

令 \(A'(i) = A(n - i)\),则有:

\[\begin{aligned} E_j &= \sum_{i = 0}^j[A(i) \times B(j - i)] - \sum_{i = 0}^{n - j}[A'(n - i - j) \times B(i)] \\ &= (A * B)[j] - (A' * B)[n - j] \end{aligned} \]

FFT 加速卷积即可。

代码:

#include <bits/stdc++.h>

#define MAXN 400100

using namespace std;

const double PI = acos(-1);

int n, len = 1, bits, rev[MAXN];
double q[MAXN];

struct Complex {
    double r, i;

    Complex operator+(const Complex &rhs) const {
        return {r + rhs.r, i + rhs.i};
    }

    Complex operator-(const Complex &rhs) const {
        return {r - rhs.r, i - rhs.i};
    }

    Complex operator*(const Complex &rhs) const {
        return {r * rhs.r - i * rhs.i, r * rhs.i + i * rhs.r};
    }
} a[MAXN], b[MAXN], a1[MAXN];

void FFT(Complex A[], int flag) {
    for (int i = 0; i < len; i++) if (rev[i] > i) swap(A[i], A[rev[i]]);
    for (int i = 1; i < len; i <<= 1) {
        Complex wn = {cos(PI / i), flag * sin(PI / i)};
        for (int j = 0; j < len; j += (i << 1)) {
            Complex w = {1, 0};
            for (int k = j; k < j + i; k++) {
                Complex t = w * A[i + k];
                A[k + i] = A[k] - t;
                A[k] = A[k] + t;
                w = w * wn;
            }
        }
    }
}

int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) scanf("%lf", &q[i]);
    for (int i = 1; i <= n; i++) a[i].r = a1[n - i].r = q[i];
    for (int i = 1; i <= n; i++) b[i].r = 1.0 / i / i;
    while (len < (n << 1)) len <<= 1, bits++;
    for (int i = 0; i < len; i++) rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << (bits - 1));
    FFT(a, 1), FFT(a1, 1), FFT(b, 1);
    for (int i = 0; i < len; i++) a[i] = a[i] * b[i], a1[i] = a1[i] * b[i];
    FFT(a, -1), FFT(a1, -1);
    for (int i = 1; i <= n; i++) printf("%lf\n", (a[i].r - a1[n - i].r) / len);
    return 0;
}

标签:洛谷,MAXN,int,rhs,P3723,Complex,HNOI2017,const,sum
From: https://www.cnblogs.com/chy12321/p/17448701.html

相关文章

  • 海底高铁(洛谷3406)
         #include<iostream>usingnamespacestd;constintN=100010;intp[N];//要去的城市intA[N],B[N],C[N];longlongs,ans[N];//ans差分数组intmain(){intN,M;scanf("%d%d",&N,&M);for(inti=1;i<=M......
  • 洛谷3397地毯
        问题分析:这个比y总的二维差分模板要简单一些,因为他一开始的矩阵都为0,而且矩阵是一个n方阵,那么其实可以用y总的模板来写,下面是二维差分矩阵的原理  #include<iostream>usingnamespacestd;constintN=1010;intb[N][N];voidinsert(intx1,in......
  • 洛谷 P9344. 去年天气旧亭台
    去年天气旧亭台题目背景依旧是过往的天气,过往的楼台烟雨。时间悄悄流逝着,山河仍在,人却已不是过去的人……题目描述登上楼台,旧时满面沉灰的地板映入眼帘。共有$n$块地板,地板分为两类,第$i$块地板的类别用$c_i$表示,积灰程度用$a_i$表示。注意$c_i$为$0$或$1$。现......
  • 洛谷 P9248 - [集训队互测 2018] 完美的集合
    显然,如果选择的\(k\)个“合法集合”固定了,那么可以放置装置的点如果存在,那么必然形成一个连通块,也就是说,答案等于所有合法方案中,可以放置装置的点形成的连通块个数之和。而根据点减边的套路,这等价于,枚举每个点,计算有多少种方案满足可以在其放置装置,再枚举每条边,计算有多少种方案......
  • 洛谷颜色对照表
    $$\def\arraystretch{1.2}\begin{array}{|c|l|l||c|l|l|}\hline颜色名称&十六进制编码&\text{RGB对应值}&颜色名称&十六进制编码&\text{RGB对应值}\\\hline\color{#52C41A}\text{AC绿}&\text{52C41A}&\text{(82,196,26)}&\color{#FE4C......
  • 洛谷 P8978 「DTOI-4」中位数
    首先考虑二分答案,把原序列变成01序列。那么问题就相当于转换成判断能否在\(k\)次操作内,将序列变成全\(1\)。由于每次操作一定可以做到把\(1\)的个数\(n\)变成\(n'=2n-1\)。因此可以得知操作一定是\(\logn\)级别的。但是这个问题仍然不太好做,很多贪心都是假的。考虑最......
  • 洛谷 P7999 [WFOI - 01] 翻转序列(requese)
    洛谷传送门注意到如果\(n\)足够小,可以过\(n^2\)。选\(x=3\)(这样做的好处是能交换两个相邻元素),每次把值为\(i\)的元素挪到\(i\),注意到我们不关心其他元素,所以翻转\([l,r]\)的效果可以看成是交换\(p_l,p_r\)。于是先跳大步,再跳小步。可以过\(n\le100\),拿到50分......
  • 洛谷 P4544 [USACO10NOV]Buying Feed G - 题解
    https://www.luogu.com.cn/problem/P4544感觉是很没意思的DP+DS优化,以前做过几道更难的题:https://codeforces.com/contest/1788/problem/Ehttps://atcoder.jp/contests/abc288/tasks/abc288_f这种题只要是让我写总是能把代码整的伤痕累累(逃第一眼:我艹不就是一个sbDP吗......
  • 机器分配 P2066 洛谷
    #dp#背包求方案#分组背包#字典序#T3机器分配P2066机器分配-洛谷|计算机科学教育新生态(luogu.com.cn)题目描述总公司拥有高效设备M台,准备分给下属的N个分公司。各分公司若获得这些设备,可以为国家提供一定的盈利。问:如何分配这M台设备才能使国家得到的盈利最大?求出......
  • P3723 [AH2017/HNOI2017]礼物(FFT)
    P3723[AH2017/HNOI2017]礼物(FFT)目录P3723[AH2017/HNOI2017]礼物(FFT)[AH2017/HNOI2017]礼物题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示思路题意分析题目传送门[AH2017/HNOI2017]礼物题目描述我的室友最近喜欢上了一个可爱的小女生。马上就要到她的生日了,他......