AC日记——「HNOI2017」礼物 LiBreOJ 2020
思路:
A题进程;
一眼出式子->各种超时过不去->看题解明白还有fft这个东西->百度文库学习fft->学习dft->学习fft->死活写不出代码->比着大佬博客敲代码->ac->不容易啊。。
代码:
- #include <bits/stdc++.h>
- using namespace std;
- #define maxn 500005
- #define INF 0x3f3f3f3f
- const double pi=acos(-);
- struct Complex
- {
- double r,i;
- Complex(double r,double i=):r(r),i(i){}
- Complex(){}
- };
- Complex operator+(Complex a,Complex b)
- {
- return Complex(a.r+b.r,a.i+b.i);
- }
- Complex operator-(Complex a,Complex b)
- {
- return Complex(a.r-b.r,a.i-b.i);
- }
- Complex operator*(Complex a,Complex b)
- {
- return Complex(a.r*b.r-a.i*b.i,a.r*b.i+a.i*b.r);
- }
- int n,m,data1[maxn],data2[maxn],rev[maxn],ans=INF;
- Complex ai[maxn],bi[maxn],ai2[maxn],bi2[maxn];
- inline void in(int &now)
- {
- char Cget=getchar();now=;
- while(Cget>''||Cget<'')Cget=getchar();
- while(Cget>=''&&Cget<='')
- {
- now=now*+Cget-'';
- Cget=getchar();
- }
- }
- void fft(Complex *res,int l,int p)
- {
- for(int i=;i<l;i++) if(i<rev[i]) swap(res[i],res[rev[i]]);
- for(int i=;i<l;i<<=)
- {
- Complex wd=Complex(cos(pi/i),sin(pi/i)*p);
- for(int v=;v<l;v+=(i<<))
- {
- Complex w=Complex(,);
- for(int k=;k<i;k++)
- {
- Complex tmp=res[v+k],tmp_=w*res[v+k+i];
- res[v+k]=tmp+tmp_,res[v+k+i]=tmp-tmp_;
- w=w*wd;
- }
- }
- }
- if(p==-) for(int i=;i<l;i++) res[i].r/=l,res[i].i/=l;
- }
- int main()
- {
- freopen("data.txt","r",stdin);
- in(n),in(m);
- int mxn,lg=,s=;
- for(mxn=;mxn<=n*;mxn*=,lg++);
- for(int i=;i<mxn;i++) rev[i]=(rev[i>>]>>)|((i&)<<(lg-));
- for(int i=;i<=n;i++) in(data1[i]),ai[i]=data1[i],ai2[n-i+]=data1[i];
- for(int i=;i<=n;i++) in(data2[i]),bi[n-i+]=data2[i],bi2[i]=data2[i],s+=data2[i];
- fft(bi,mxn,),fft(bi2,mxn,),fft(ai,mxn,),fft(ai2,mxn,);
- for(int i=;i<mxn;i++) ai[i]=ai[i]*bi[i],ai2[i]=ai2[i]*bi2[i];
- fft(ai,mxn,-),fft(ai2,mxn,-);
- for(int l=-m+;l<m;l++)
- {
- int w=;
- for(int i=;i<=n;i++) w+=(data1[i]+l)*(data1[i]+l)+data2[i]*data2[i];
- for(int i=;i<=n;i++)
- {
- int v=(int)(ai[i].r+0.1)+(int)(ai2[n-i+].r+0.1)+s*l;
- ans=min(ans,w-*v);
- }
- }
- printf("%d\n",ans);
- return ;
- }
AC日记——「HNOI2017」礼物 LiBreOJ 2020的更多相关文章
- AC日记——「HNOI2017」单旋 LiBreOJ 2018
#2018. 「HNOI2017」单旋 思路: set+线段树: 代码: #include <bits/stdc++.h> using namespace std; #define max ...
- AC日记——「SCOI2016」美味 LiBreOJ 2016
#2016. 「SCOI2016」美味 思路: 主席树: 代码: #include <bits/stdc++.h> using namespace std; #define maxa 26 ...
- AC日记——「SCOI2015」情报传递 LiBreOJ 2011
#2011. 「SCOI2015」情报传递 思路: 可持久化树状数组模板: 代码: #include <bits/stdc++.h> using namespace std; #defin ...
- AC日记——「SCOI2016」幸运数字 LiBreOJ 2013
「SCOI2016」幸运数字 思路: 线性基: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 20005 # ...
- AC日记——「SCOI2016」背单词 LiBreOJ 2012
#2012. 「SCOI2016」背单词 思路: Orz: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1 ...
- AC日记——「SCOI2015」国旗计划 LiBreOJ 2007
#2007. 「SCOI2015」国旗计划 思路: 跪烂Claris 代码: #include <cstdio> #include <algorithm> #define ma ...
- AC日记——「SCOI2015」小凸玩矩阵 LiBreOJ 2006
「SCOI2015」小凸玩矩阵 思路: 二分+最大流: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300 ...
- AC日记——「SDOI2017」序列计数 LibreOJ 2002
「SDOI2017」序列计数 思路: 矩阵快速幂: 代码: #include <bits/stdc++.h> using namespace std; #define mod 201704 ...
- loj2020 「HNOI2017」礼物
所有的下标从 \(0\) 开始. 考虑枚举 \(C\) (第一个加上负的等于第二个加上其绝对值)和第二个手链的偏移量 \(p\).答案就是 \[\sum_{i=0}^{n-1}(x_i+C-y_{(i ...
随机推荐
- ubuntu14安装tensorflow并测试
1.ubuntu版本的选择:看了很多博文,建议使用ubuntu14,稳定兼容性好. 2.tensorflow的安装: http://wiki.jikexueyuan.com/project/tenso ...
- 手脱ACProtect V1.4X(有Stolen Code)
1.载入PEID ACProtect V1.4X -> risco 首先需要说明的是,这个壳被偷取的代码非常多,如果去找的话会比较麻烦,所以我们换一种另类的方法,不脱壳也可以使用资源修改器对程序 ...
- 获取Web.Config中节点的值
读取webconfig里面的appSetting和connectionString <appSettings> <add key="SiteURL" value= ...
- WPF 与设备无关的单位
WPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机上都 ...
- (转)python编码问题
时不时总是会碰到令人头疼的编码问题,这里推荐一篇决定好文,需反复诵读之: http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html . . ...
- JavaScript中this的用法详解
JavaScript中this的用法详解 最近,跟身边学前端的朋友了解,有很多人对函数中的this的用法和指向问题比较模糊,这里写一篇博客跟大家一起探讨一下this的用法和指向性问题. 1定义 thi ...
- vijos 1464 积木游戏 DP
描述 积木游戏 SERCOI 最近设计了一种积木游戏.每个游戏者有N块编号依次为1 ,2,…,N的长方体积木.对于每块积木,它的三条不同的边分别称为"a边"."b边&qu ...
- IntelliJ IDEA使用技巧 (类比pycharm)
第1章 课程介绍 1)下载及安装2)界面介绍 ... ①界面中左右最边上的小窗口(旋转了90度的字体)都自带了下标,win下快捷键alt+index切换窗口 ②演示效果:模拟时钟,快捷键如,0到10 ...
- 【CF1009F】 Dominant Indices (长链剖分+DP)
题目链接 \(O(n^2)\)的\(DP\)很容易想,\(f[u][i]\)表示在\(u\)的子树中距离\(u\)为\(i\)的点的个数,则\(f[u][i]=\sum f[v][i-1]\) 长链剖 ...
- chrome最小字体12px如何修改
在html标记样式里加入 <style> html { -webkit-text-size-adjust:none } </style> 这样的方式可以设置chrome字体小于 ...