bzoj 4827: [HNOI2017]礼物 (FFT)
一道FFT
然而据说暴力可以水70分
然而我省选的时候看到了直接吓傻了 连暴力都没打
太弱了啊QAQ
emmmm
详细的拆开就看其他题解吧233
最后那一步卷积其实我一直没明白
后来画画图终于懂了
只要把其中一个反过来
多项式乘法的结果中的每一项系数就对应某一个Σx[i] * y[j] 的结果
前面几项是不完全的结果
但是太小了就被忽略啦
代码如下
- /**************************************************************
- Problem: 4827
- User: cminus
- Language: C++
- Result: Accepted
- Time:5644 ms
- Memory:24568 kb
- ****************************************************************/
- #include <cstdio>
- #include <cmath>
- #include <complex>
- using namespace std;
- const int N = ;
- typedef long long ll;
- typedef complex<double> cp;
- const double pi = acos(-1.0);
- cp A[N], B[N];
- void FFT(cp *y, int n, int type) {
- if (n == ) return ;
- cp l[n >> ], r[n >> ];
- for (int i = ; i <= n; i++)
- if (i & ) r[i >> ] = y[i];
- else l[i >> ] = y[i];
- FFT(l, n >> , type); FFT(r, n >> , type);
- cp omegan(cos( * pi / n), sin( * pi * type / n)), omega(, );
- for (int i = ; i < n >> ; i++) {
- y[i] = l[i] + r[i] * omega;
- y[i + (n >> )] = l[i] - r[i] * omega;
- omega *= omegan;
- }
- }
- int main() {
- int n, m, ans = , y = ;
- scanf("%d %d", &n, &m);
- for (int i = ; i < n; i++) {
- int x; scanf("%d", &x);
- A[n - i - ] = x;
- ans += x * x;
- }
- for (int i = ; i < n; i++) {
- int x; scanf("%d", &x);
- B[i] = x;
- ans += x * x;
- y += (int)B[i].real() - A[n - i - ].real();
- }
- int n1; for (n1 = ; n1 <= n * ; n1 <<= );
- for (int i = ; i < n; i++)
- B[i + n] = B[i];
- FFT(A, n1, ); FFT(B, n1, );
- for (int i = ; i <= n1; i++)
- A[i] *= B[i];
- FFT(A, n1, -);
- int temp = , z = (-y) / n;
- for (int i = ; i < n; i++) temp = max(temp, (int)(A[i + n - ].real() / n1 + 0.5));
- ans -= temp * ;
- temp = z * z * n + y * z * ;
- z += ; temp = min(temp, z * z * n + y * z * );
- z -= ; temp = min(temp, z * z * n + y * z * );
- // 有理有据的精度优化
- ans += temp;
- printf("%d\n", ans);
- return ;
- }
bzoj 4827: [HNOI2017]礼物 (FFT)的更多相关文章
- bzoj 4827: [Hnoi2017]礼物 [fft]
4827: [Hnoi2017]礼物 题意:略 以前做的了 化一化式子就是一个卷积和一些常数项 我记着确定调整值还要求一下导... #include <iostream> #include ...
- bzoj 4827 [Hnoi2017]礼物——FFT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4827 式子就是 \sum_{i=0}^{n-1}(a[ i ] - b[ i+k ] + c ...
- bzoj 4827 [Hnoi2017] 礼物 —— FFT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4827 首先,旋转对应,可以把 b 序列扩展成2倍,则 a 序列对应到的还是一段区间: 再把 ...
- BZOJ 4827 [Hnoi2017]礼物 ——FFT
题目上要求一个循环卷积的最小值,直接破环成链然后FFT就可以了. 然后考虑计算的式子,可以分成两个部分分开计算. 前半部分FFT,后半部分扫一遍. #include <map> #incl ...
- bzoj 4827: [Hnoi2017]礼物【FFT】
记得FFT要开大数组!!开到快MLE的那种!!我这个就是例子TAT,5e5都RE了 在这题上花的时间太多了,还是FFT不太熟练. 首先看70分的n方做法:从0下标开始存,先n--,把a数组倍增,然后枚 ...
- 【刷题】BZOJ 4827 [Hnoi2017]礼物
Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在 ...
- BZOJ 4827: [Hnoi2017]礼物 FFT_多项式_卷积
题解稍后在笔记本中更新 Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r&q ...
- BZOJ:4827: [Hnoi2017]礼物
[问题描述] 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度. 但是在她生日的 ...
- 4827: [Hnoi2017]礼物
4827: [Hnoi2017]礼物 链接 分析: 求最小的$\sum_{i=1}^{n}(x_i-y_i)^2$ 设旋转了j位,每一位加上了c. $\sum\limits_{i=1}^{n}(x_{ ...
随机推荐
- Qt Gui 第六章布局管理
1.QRadioButton之间如何互斥 其中一种方法是将各个QRadioButton控件放在同一个toolbarsLayout或者toolbarsGroupBox即可:如下所示 toolbarsGr ...
- java学习笔记之IO编程—File文件操作类
1. File类说明 在Java语言里面提供有对于文件操作系统操作的支持,而这个支持就在java.io.File类中进行了定义,也就是说在整个java.io包里面,File类是唯一一个与文件本身操作( ...
- 流量难、获客难、增长难?增长黑客思维“解救”B端业务
随着市场竞争的不断加剧,流量越来越贵.留存与转化越来越难,实现用户和业务的增长并不容易.无论是B2C 还是B2B的企业,都可能遇到增长的挑战.对于营销团队而言,传统的漏斗式营销思维已有些力不从心,需要 ...
- 22.01.Cluster
1. 클러스터링 iris 데이터셋 확인¶ In [2]: from sklearn import cluster from sklearn import datasets iris = dat ...
- TD - SimpleTextarea
html模板 <input dojoType="bootstrap.form.SimpleTextarea" dojoAttachPoint="assetDescr ...
- django学习 session保持登录,且登出
学一点记一点 刚刚进来的时候突然发现,博客园的主页在缩小的时候会发生一些挤压,有点意思 今天刚看了session,感觉之前太迷茫,把问题想得过于复杂了. 我这个是建立在有登录和注册的功能上的演示. 首 ...
- mybatis大于等于小于等于的写法
第一种写法(1): 原符号 < <= > >= & ' " 替换符号 < <= > >= & ' " ...
- linux上部署springboot应用的脚本
#!/bin/bash #getProcessId then kill pids=$(ps -ef | grep flashsale| awk '{print $2}') for pid in $pi ...
- 修改json数据中key(键值)
//方法一:修改JSONObject的键 public static JSONObject changeJsonObj(JSONObject jsonObj,Map<String, String ...
- tkinter页面卡死
tkinter界面卡死的解决办法 1.如果点击按钮,运行了一个比较耗时的操作,那么界面会卡死 import tkinter as tk import time def onclick(text, ...