bzoj 4827 [Hnoi2017]礼物——FFT

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4827

式子就是 \sum_{i=0}^{n-1}(a[ i ] - b[ i+k ] + c)^2 。把 b 翻成两倍后卷积即可。关于 c 的部分是一个二次函数,注意 c 只能是整数!

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define db double
using namespace std;
const int N=5e4+5,M=N*6;
const db pi=acos(-1);
int n,m,sm,len,ca,cb,r[M];
struct cpl{db x,y;}a[M],b[M],I;
cpl operator+ (cpl a,cpl b){return (cpl){a.x+b.x,a.y+b.y};}
cpl operator- (cpl a,cpl b){return (cpl){a.x-b.x,a.y-b.y};}
cpl operator* (cpl a,cpl b){return (cpl){a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x};}
int rdn()
{int ret=0;bool fx=1;char ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-')fx=0;ch=getchar();}while(ch>='0'&&ch<='9') ret=(ret<<3)+(ret<<1)+ch-'0',ch=getchar();return fx?ret:-ret;
}
void fft(cpl *a,bool fx)
{for(int i=0;i<len;i++)if(i<r[i])swap(a[i],a[r[i]]);for(int R=2;R<=len;R<<=1){int m=R>>1;cpl Wn=(cpl){ cos(pi/m),fx?-sin(pi/m):sin(pi/m) };for(int i=0;i<len;i+=R){cpl w=I;for(int j=0;j<m;j++,w=w*Wn){cpl tmp=w*a[i+m+j];a[i+m+j]=a[i+j]-tmp;a[i+j]=a[i+j]+tmp;}}}
}
int main()
{n=rdn();m=rdn(); I.x=1;for(int i=n-1;i>=0;i--){a[i].x=rdn();sm+=a[i].x*a[i].x;ca+=a[i].x;}for(int i=0;i<n;i++){b[i].x=b[i+n].x=rdn();sm+=b[i].x*b[i].x;cb+=b[i].x;}int c=floor((db)(cb-ca)/n),tmp=n*c*c+2*(ca-cb)*c;c++; tmp=min(tmp,n*c*c+2*(ca-cb)*c);sm+=tmp;len=1;for(;len<=n*3;len<<=1);for(int i=0;i<len;i++)r[i]=(r[i>>1]>>1)+((i&1)?len>>1:0);fft(a,0); fft(b,0);for(int i=0;i<len;i++)a[i]=a[i]*b[i];fft(a,1); tmp=0;for(int i=(n<<1)-1;i>=n-1;i--)tmp=max(tmp,int(a[i].x/len+0.5));sm-=tmp<<1;printf("%d\n",sm);return 0;
}

 

转载于:https://www.cnblogs.com/Narh/p/10024331.html

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

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

相关文章

C++之虚函数是如何实现的

最近面试过程中问到了虚函数的实现&#xff0c;当时答对了一部分&#xff0c;现在做一个详细的分析&#xff1a; 1.什么是虚函数 在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数&#xff0c;用法格式为&#xff1a;virtual 函数返回类型 函数名&#x…

腾达fh307没有显示服务器名,腾达(Tenda)FH307路由器上网设置 | 192路由网

本文介绍了腾达(Tenda)FH307路由器的安装、上网设置方法&#xff0c;同时分别介绍了“ADSL(PPPOE)拨号”、“动态IP”、“静态IP”三种上网方式的区别&#xff0c;以及在腾达(Tenda)FH307路由器上的详细设置。腾达(Tenda)FH307无线路由器一台新购买的腾达FH307路由器实现上网&a…

记得重用layout

2019独角兽企业重金招聘Python工程师标准>>> 这样的布局&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" android:layout_width"…

sql2000-2 4/19

SQL2000客戶的上次問題後來H盤自動毀掉了昨天換了顆新硬碟,當資料庫挂上之後,H一直又提示錯誤,後來還是將資料庫路徑設為I傍晚時分親眼目睹了H所有資料被自動刪除的過程,待服務器重新啟動後H無法存取萬幸的是早一步將資料庫路徑作了更動在還原資料庫的過程中用克隆的BAK還原一直…

五一加班

前几年五一放假&#xff0c;我们会去小云家&#xff0c;五一也是荔枝成熟的时候&#xff0c;有一年吃上刚从树上摘的荔枝&#xff0c;现在还能记起那种味道&#xff0c;也是那次之后&#xff0c;想奢入简很难了&#xff0c;荔枝也一定要吃新鲜的了。今年一直还没看到荔枝的影子…

win10系统能做域服务器吗,Win10 LTSC 加入 Windows Server 2019 域服务器

前面的文章已经创建了域服务器、创建了域组织单位、用户组、用户&#xff0c;下面是如何把一台 Win10 LTSC 系统的电脑加入到Windows Server 2019 域服务器&#xff1b;0x01 加域准备修改计算机名、修改IP地址DNS指向 Windows Server 2019 域控制器&#xff1b;注意&#xff1a…

多线程死锁及解决办法

死锁是由于不同线程按照不同顺序进行加锁而造成的。如&#xff1a; 线程A&#xff1a;对lock a加锁 > 对lock b加锁 > dosth > 释放lock b > 释放lock a 线程B&#xff1a;对lock b加锁 > 对lock a加锁 > dosth > 释放lock a > 释放lock b 这样两条线程…

html:web前端开发规范

基本原则* 遵循内容&#xff08;HTML&#xff09;、显示&#xff08;CSS&#xff09;、行为&#xff08;JavaScript&#xff09;分离的代码组织模式 * 代码格式化&#xff0c;保持干净整洁 HTML部分2.1. 添加必须的utf-8的字符集&#xff0c;并且使用HTML5的简洁方式&#xff1…

离职就打低绩效,这样对吗?

应该不止听见一个人说过&#xff0c;担心离职遇到各种不爽的事情&#xff0c;比如卡你的离职时间&#xff0c;比如让你背很低的绩效&#xff0c;比如你今年的年终奖就没有了&#xff0c;再比如&#xff0c;你和原来玩得好的同事突然就没话说了。我记得很清楚的事情是&#xff0…

+ 网页制作效果常用代码

控制横向和纵向滚动条的显隐&#xff1f;<body style"overflow-y:hidden"> 去掉x轴<body style"overflow-x:hidden"> 去掉y轴<body scroll"no">不显表格变色<TD οnmοuseοver"this.style.backgroundColor#FFFFFF&qu…

设计一个串口服务器设备.《需求分析报告》,《项目开发,分布式多串口交换服务器的设计与实现...

摘要&#xff1a;随着信息技术和物联网技术的迅猛发展,TCP/IP网络应用呈现白热化趋势,各种以TCP/IP网络为主的通信设备已经成为主流,网络似乎无处不在.这种局面使得传统的以串行通信为主要通信方式的设备逐渐边缘化,然而要全部更换串行设备,成本开销太大,分布式多串口交换服务器…

设计模式的理解的总结

参考的博客&#xff1a;http://blog.csdn.net/wangeen/article/details/8272501 最近又把设计模式翻了一边&#xff0c;写个个人总结&#xff0c;这个总结比较简单&#xff0c;主要是一些理解&#xff0c;对于他们的实现和应用以后再总结 设计模式是编程抽象化的一个具体的应用…

PID算法原理介绍

先来彻底搞懂PID到底是啥&#xff1f;PID&#xff0c;就是“比例&#xff08;proportional&#xff09;、积分&#xff08;integral&#xff09;、微分&#xff08;differential&#xff09;”&#xff0c;是一种很常见的控制算法。在工程实际中&#xff0c;应用最为广泛的调节…

将python代码编译成.so文件

https://moonlet.gitbooks.io/cython-document-zh_cn/content/ch1-basic_tutorial.html add_num.pyx文件 def add_nums(ls):total 0.for l in ls:total lreturn totalset_up.py from distutils.core import setup from Cython.Build import cythonizesetup(ext_modules cyth…

将iphone中的照片同步到电脑

在windows中&#xff1a; 去我的电脑&#xff0c;点iphone的图标&#xff0c;打开直接就是照片的文件夹&#xff0c;可以进行各种操作&#xff1b; 在mac中&#xff1a; 使用iphoto软件&#xff0c;选择iphoto的菜单栏中“iphoto”->"performance"->"gene…

雅虎公司C#笔试题

雅虎公司C#笔试题&#xff0c;包括问答题和选择题两部分。试试看&#xff0c;你能回答出多少题&#xff0c;可以通过雅虎的考试吗&#xff1f;Question 1. (单选)在计算机网络中,表征数据传输可靠性的指标是1. 传输率2. 误码率3. 信息容量4. 频带利用率Question 2. (单选)以下关…

打败opencv ,哦,是快了3倍

大家好&#xff0c;本文转自我一个读者朋友Homio的文章&#xff0c;推荐给大家&#xff0c;希望对做这方便的同学有所帮助。程序员&#xff0c;哦&#xff01;不&#xff01;软件工程师们都对opencv很熟悉&#xff0c;它在工作学习研究中起到了不可或缺的作用。但是它臃肿的身躯…

Linux内核裁减

Linux内核裁减 &#xff08;1&#xff09;安装新内核: i)将新内核copy到/usr/src下, #tar xzvf linux-2.6.38.4.tar.gz -----解压缩. ii) 将名为linux的符号链接删掉,这是旧版本内核的符号链接. #ln -s linux-2.6.38.4 linux ------建立linux-2.6.38.4的符号链接linux. &#x…

python 将一个字符list的列表扁平化成了一个list

a[[app,ap,ade],[er],[bcc,brt]] 将这么一个list 转换成 a2[app,ap,ade,er,bcc,brt] 做法&#xff1a;a2[x for tup in a for x in tup] 转载于:https://www.cnblogs.com/cheng-cheng/p/10027446.html

数据库中使用自增量字段与Guid字段作主键的性能对比(补充篇)-----转

我在发表过“据库中使用自增量字段与Guid字段主键的性能对比”这篇文章后&#xff0c;得到博客园各园友的很多评价&#xff0c;大家对我的测试方法也提出一些改进的方法。让我吃惊的是一园友提出&#xff1a;把guid和id的测试顺序颠倒一下&#xff0c;看下结果。今天就再测试一…