[ZJOI2014] 力 题解

容易发现:

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

不妨设 \(a_i=q_i,b_i=\dfrac 1{i^2}\)

\[E_i=\sum_{j=1}^{i-1}a_jb_{i-j}-\sum_{j=1}^{n-i}a_jb_{j-i} \]

发现前半部分就是多项式乘法,后半部分与 [BZOJ2194] 一致。直接 FFT 干过去即可。

时间复杂度 \(O(n\log n)\)

#include<bits/stdc++.h>
#define stp fixed<<setprecision(3)
using namespace std;
const int N=3e5+5;
const double pi=acos(-1);
struct comn{double a,b;};
struct dft{comn fg[N];}f,g,h;
int n,m,rev[N],k,mx=1;
comn operator+(comn x,comn y){return {x.a+y.a,x.b+y.b};
}comn operator-(comn x,comn y){return {x.a-y.a,x.b-y.b};
}comn operator*(comn x,comn y){return {x.a*y.a-x.b*y.b,x.b*y.a+x.a*y.b};
}void operator+=(comn &x,comn y){x=x+y;}
void operator*=(comn &x,comn y){x=x*y;}
void init(){for(int i=0;i<mx;i++)rev[i]=(rev[i>>1]>>1)|((i&1)<<(k-1));cout<<"";
}void fft(comn *a,int n,int fl){for(int i=0;i<n;i++)if(i<rev[i]) swap(a[i],a[rev[i]]);comn om={cos(pi),fl*sin(pi)},w={1,0};for(int i=1;i<n;i*=2,om={cos(pi/i),fl*sin(pi/i)})for(int j=0;j<n;j+=i*2,w={1,0})for(int l=j;l<j+i;l++){comn x=a[l],y=w*a[l+i];a[l]+=y,a[l+i]=x-y,w*=om;}
}int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0),cin>>n;while(mx<=n+n) mx*=2,k++;for(int i=1;i<=n;i++)cin>>f.fg[i].a,g.fg[i].a=1.0/i/i;for(int i=0;i<=n;i++)h.fg[n-i].a=f.fg[i].a;init(),fft(f.fg,mx,1);fft(g.fg,mx,1),fft(h.fg,mx,1);for(int i=0;i<mx;i++)f.fg[i]*=g.fg[i],g.fg[i]*=h.fg[i];fft(f.fg,mx,-1),fft(g.fg,mx,-1);for(int i=1;i<=n;i++)cout<<stp<<(f.fg[i].a-g.fg[n-i].a)/mx<<"\n";return 0;
}//fast fourier transform

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/871252.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows双击查看ip

如何方便查看本地电脑的ip? 直接上干货: 1、在桌面右击,新建 => 文本文档; 2、重命令为ip.txt 3、双击打开,输入 ipconfig pause , 然后保存; 4、右击文档,重命令为“ip.bat”;5、再次双击此文档,ip地址就出来了; ps: ipconfig:是系统命令,用于查看ip的地址…

一个日h站的Nday

0x00 前言 今天先来无事的我翻起了qq收藏夹。忽然发现了一个去年EDUSRC群里一个老表发的洞。今天就给大家发出来耍耍。 抵制黄色网站人人有责,打造绿色上网环境。 面对正规网站时候,请不要做非法测试!!! 废话就不多说了。 0x01正文 fofa语句 body="<script type=t…

【触想智能】工业电脑一体机在数控机床设备上应用的注意事项以及工业电脑日常维护知识分享

数控技术的应用不但给传统制造业带来了革命性的变化,使制造业成为工业化的象征,而且随着数控技术的不断发展和应用领域的扩大,它对国计民生的一些重要行业(IT、汽车、轻工、医疗等)的发展起着越来越重要的作用,因为这些行业所需装备的数字化已是现代发展的大趋势。随着数控…

day0java准备

Java-001 Markdown 暂时跳过,vscode里未能实现编译 java 1.已配置环境 2.继续学黑马程序员:已到50/200 3.内存4.学到方法(C里函数)

NB!一款基于java开发的漏洞检测工具,集合了泛微、用友、大华、海康、致远、红帆、万户、帆软等漏洞

1、工具介绍 基于 https://github.com/yhy0/ExpDemo-JavaFX 上添加poc 2、工具下载链接: 工具下载:工具下载 3、新增检测漏洞用友NC-Cloud系统接口getStaffInfo存在SQL注入漏洞 用友U8-Cloud ReleaseRepMngAction存在SQL注入漏洞复现(CNVD-2024-33023) 用友U8-CRM系统getDeptN…

网络购物数据分析

#获取数据 import pandas as pd infor=pd.read_csv(buy_input_1.csv) infor.head(20) #选取预观察数据#方法1 # x1=infor["Annual Income"] # print(x1) # x2=infor["Spending Score"] # print(x2)# """ #方法2 # x1=infor.iloc[:,3] # …

了解ESP32睡眠模式及其功耗

转载自:https://lastminuteengineers.com/esp32-sleep-modes-power-consumption/ Insight Into ESP32 Sleep Modes & Their Power ConsumptionThe ESP32 is undeniably a worthy competitor to many WiFi/MCU SoCs, outperforming them in both performance and price. Ho…

某公交管理系统简易逻辑漏洞+SQL注入挖掘

某公交管理系统挖掘 SQL注入漏洞 前台通过给的账号密码,进去 按顺序依次点击1、2、3走一遍功能点,然后开启抓包点击4当点击上图的4步骤按钮时,会抓到图下数据包,将其转发到burp的重放模块构造以下注入poc,可见注入延时了五秒,用户输入的语句成功拼接到原有的SQL语句上执行…

记一次常规的网络安全渗透测试

前言 上个月根据领导安排,需要到本市一家电视台进行网络安全评估测试。通过对内外网进行渗透测试,网络和安全设备的使用和部署情况,以及网络安全规章流程出具安全评估报告。本文就是记录了这次安全评估测试中渗透测试部分的内容,而且客户这边刚刚做过了一次等保测评,算一下…

工具 | Hfish

0x00 简介 HFish是一款社区型免费蜜罐。 下载地址 HFish下载: HFish下载 0x01 功能说明支持多种蜜罐服务支持自定义Web蜜罐支持流量牵引支持端口扫描感知能力支持多种告警方式注:仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不…

ida(持续更新)

如题前缀 说明sub_ 指令和子函数起点locret_ 返回指令loc_ 指令off_ 数据,包含偏移量seg_ 数据,包含段地址值asc_ 数据,ASCII字符串byte_ 数据,字节(或字节数组)word_ 数据,16位数据(或字数组)dword_ 数据,32位数据(或双字数组)qword_ 数据,64位数据(或4字数组)…

工具 | Hashcat

0x00 简介 Hashcat是一款强大的密码破解工具。 下载地址 Hashcat下载: Hashcat下载 0x01 功能说明直接破解组合攻击掩码暴力破解混合攻击联合攻击注:仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。