整理的算法模板合集: ACM模板

点我看算法全家桶系列!!!

实际上是一个全新的精炼模板整合计划


每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.15 多项式 FFT

Problem

Solution

需要我们将环 AAA 破环成链,即将 AAA 序列延长复制一倍

zzz 直接用二次函数求最值即可,不过注意因为 zzz 只能取整数,所以我们需要取极值点左边右边 yyy 最大的整数 xxx 点。

Code

// Problem: P3723 [AH2017/HNOI2017]礼物
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P3723
// Memory Limit: 125 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>
//#define int long long
using namespace std;
const int N = 500007, INF = 1e12;
const double PI = acos(-1.0);int n, m, t;
int a[N];
int RR[N], limit, L;
int x[N], y[N];
int sumx1, sumx2, sumy1, sumy2;
int maxx = -INF;
int ans;struct Complex
{double x, y;Complex(double x = 0, double y = 0) : x(x), y(y) { }
}A[N], B[N];Complex operator * (Complex J, Complex Q) {return Complex(J.x * Q.x - J.y * Q.y, J.x * Q.y + J.y * Q.x);}
Complex operator - (Complex J, Complex Q) {return Complex(J.x - Q.x, J.y - Q.y);}
Complex operator + (Complex J, Complex Q) {return Complex(J.x + Q.x, J.y + Q.y);}void FFT(Complex *A, int type)
{for(int i = 0; i < limit; ++ i) {if(i < RR[i])swap(A[i], A[RR[i]]);}for(int mid = 1; mid < limit; mid <<= 1) {Complex wn(cos(PI / mid), type * sin(PI / mid));for(int len = mid << 1, pos = 0; pos < limit; pos += len) {Complex w(1, 0);for(int k = 0; k < mid; ++ k, w = w * wn) {Complex x = A[pos + k];Complex y = w * A[pos + mid + k];A[pos + k] = x + y;A[pos + mid + k] = x - y;}}}if(type == 1) return ;for(int i = 0; i <= limit; ++ i) {A[i].x /= limit;}
}signed main()
{scanf("%d%d", &n, &m);for(int i = 1; i <= n; ++ i)scanf("%d", &x[i]), sumx1 += x[i], sumx2 += x[i] * x[i], A[i].x = A[i + n].x = x[i];for(int i = 1; i <= n; ++ i)scanf("%d", &y[i]), sumy1 += y[i], sumy2 += y[i] * y[i], B[n - i + 1].x = y[i];double a = n, b = 2 * (sumx1 - sumy1);int z1 = floor(b / (- 2 * a)), z2 = ceil(b / (- 2 * a));int tmp = min(z1 * z1 * a + z1 * b, z2 * z2 * a + z2 * b);int ans = tmp + sumx2 + sumy2;L = 0, limit = 1;while(limit <= 2 * n)limit <<= 1, ++ L;for(int i = 0; i < limit; ++ i)RR[i] = (RR[i >> 1] >> 1) | ((i & 1) << (L - 1));FFT(A, 1);FFT(B, 1);for(int i = 0; i <= limit; ++ i) {A[i] = A[i] * B[i];}FFT(A, -1);for(int i = n; i <= 2 * n + 1; ++ i) {maxx = max(maxx, (int)(A[i].x + 0.5));}ans -= 2 * maxx;printf("%d\n", ans);return 0;
}

(每日一题)P3723 [AH2017/HNOI2017]礼物(经典FFT)相关推荐

  1. P3723 [AH2017/HNOI2017]礼物(FFT)

    P3723 [AH2017/HNOI2017]礼物 式子化简 ∑i=1n(xi−yj)2\sum_{i = 1} ^{n} (x_i- y_j) ^2\\ i=1∑n​(xi​−yj​)2 我们对第一 ...

  2. 洛谷P3723 [AH2017/HNOI2017]礼物(FFT)

    传送门 首先,两个数同时增加自然数值相当于只有其中一个数增加(此增加量可以小于0) 我们令$x$为当前的增加量,${a},{b}$分别为旋转后的两个数列,那么$$ans=\sum_{i=1}^n(a_ ...

  3. P3723 [AH2017/HNOI2017]礼物 FFT + 式子化简

    传送门 文章目录 题意: 思路: 题意: 思路: 首先可以知道,我们对某个数组加上一个正数数的操作可以转换成对一个数组加上一个任意数,所以我们设变化量为xxx. 对于∑i=1n(ai−bi)2\sum ...

  4. 洛谷P3723 [AH2017/HNOI2017]礼物

    Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在 ...

  5. 【bzoj4827】[AH2017/HNOI2017]礼物(FFT)

    Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是 ...

  6. AH2017/HNOI2017 礼物

    P3723 [AH2017/HNOI2017]礼物 题目大意 给两个数列 a a a和 b b b, a a a和 b b b中的数都小于等于 m m m, b b b可以首尾相接地旋转,要选择一个整 ...

  7. [BZOJ4827][Hnoi2017]礼物(FFT)

    4827: [Hnoi2017]礼物 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 1315  Solved: 915 [Submit][Statu ...

  8. [AH2017/HNOI2017]礼物(FFT)

    题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一 ...

  9. [AH2017/HNOI2017]礼物

    题意: 两个数列,每个数列都可以顺序旋转,也可以对所有数同时增加一个非负整数,现在问 的最小值 题解: 在求卷积前要将A数组倍长,B数组翻转 B数组翻转好理解,为什么A数组倍长,因为题目的数列是可以移 ...

最新文章

  1. python 往excel 里面写数据
  2. [uart]stty命令使用
  3. 由设置body线性背景色引发的问题-----当声明文档类型时,对body设置线性背景色,页面背景色无法整体线性过渡...
  4. 京东三级列表页持续架构优化—Golang+Lua(OpenResty)最佳实践
  5. 全国英语计算机9月统考2019,2019年9月网络教育统考《计算机应用基础》模拟题6...
  6. 每日一题(11)—— 结构体大小
  7. [webpack] 如何把代码内联进html中?
  8. 完全背包问题python_令人头疼的背包九讲(2)完全背包问题
  9. 【渝粤教育】电大中专公共基础课程 (2)作业 题库
  10. beego使用php,使用GO语言Beego框架开发一个简易留言板
  11. Async和Await如何简化异步编程,几个实例让你彻底明白!
  12. Js设置Cookie
  13. [转]论window和Linux之长短
  14. c++ 优先队列(priority_queue)
  15. jmeter学习:如何使用jmeter自动发帖
  16. 使用PDF编辑器进行PDF合并与PDF页面提取
  17. 林轩田之机器学习课程笔记( embedding numerous feature之support vector regression)(32之22)
  18. jquery/js实现一个网页同时调用多个倒计时(最新的)
  19. android的资源混淆,android混淆资源引发的血案以及学习感受资源混淆
  20. 递 归 ,递 推 ,贪 心,学 习 总 结

热门文章

  1. OpenCV实现失焦模糊图像恢复
  2. 使用Python部署机器学习模型的10个实践经验
  3. 百度提出PADDLESEG:一个高效的图像分割开发工具
  4. mysql索引为啥要选择B+树 (上)
  5. 2013-7-12学习笔记
  6. UITableViewCell 左侧滑动删除按钮 添加图片 (不完美解决)
  7. 玩转 iOS 开发:《iOS 设计模式 — 工厂模式》
  8. php 多维数组排序_已迁移
  9. ANT无线通信技术(2) 通道配置
  10. windows 7使用CAJViewer时出错显示缺少ReaderEX.dll处理