bzoj4827
FFT+数学
先开始觉得枚举c就行了,不过我naive了
事实上c是确定的,通过化简式子可以得出一个二次函数,那么c就可以解出来了。
然后把a翻转,fft一下就行了
难得的良心题
- #include<bits/stdc++.h>
- using namespace std;
- const int N = 2e5 + ;
- const double pi = acos(-);
- int n, len, ans, suma, sumb, mx = -1e9, m;
- struct data {
- double x, y;
- data() {}
- data(double _x, double _y) : x(_x), y(_y) {}
- data friend operator - (const data &a, const data &b) {
- return data(a.x - b.x, a.y - b.y);
- }
- data friend operator + (const data &a, const data &b) {
- return data(a.x + b.x, a.y + b.y);
- }
- data friend operator * (const data &a, const data &b) {
- return data(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x);
- }
- } a[N], b[N];
- void fft(data *a, int len, int f) {
- int n = << len;
- for(int i = ; i < n; ++i) {
- int t = ;
- for(int j = ; j < len; ++j) {
- if(i & ( << j)) {
- t |= << (len - j - );
- }
- }
- if(i < t) {
- swap(a[i], a[t]);
- }
- }
- for(int l = ; l <= n; l <<= ) {
- int m = l >> ;
- data w = data(cos(pi / m), f * sin(pi / m));
- for(int i = ; i < n; i += l) {
- data t = data(, );
- for(int k = ; k < m; ++k, t = t * w) {
- data x = a[k + i], y = t * a[i + k + m];
- a[k + i] = x + y;
- a[i + m + k] = x - y;
- }
- }
- }
- }
- int main() {
- scanf("%d%d", &n, &m);
- for(int i = ; i <= n; ++i) {
- scanf("%lf", &a[i].x);
- suma += a[i].x;
- }
- for(int i = ; i <= n; ++i) {
- scanf("%lf", &b[i].x);
- b[i + n].x = b[i].x;
- sumb += b[i].x;
- }
- int c = floor((double)(sumb - suma) / n + 0.5);
- for(int i = ; i <= n; ++i) {
- a[i].x += c;
- ans += a[i].x * a[i].x + b[i].x * b[i].x;
- }
- reverse(b + , b + * n + );
- for(; << len <= * n; ++len);
- fft(a, len, );
- fft(b, len, );
- for(int i = ; i < << len; ++i) {
- a[i] = a[i] * b[i];
- }
- fft(a, len, -);
- for(int i = n + ; i <= * n + ; ++i) {
- a[i].x /= ( << len);
- mx = max(mx, (int)(a[i].x + 0.1));
- }
- printf("%d\n", ans - * mx);
- return ;
- }
bzoj4827的更多相关文章
- 【BZOJ4827】【HNOI2017】礼物(FFT)
[BZOJ4827][HNOI2017]礼物(FFT) 题面 Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她.每 ...
- BZOJ4827 [Hnoi2017]礼物 多项式 FFT
原文链接http://www.cnblogs.com/zhouzhendong/p/8823962.html 题目传送门 - BZOJ4827 题意 有两个长为$n$的序列$x$和$y$,序列$x,y ...
- 【BZOJ4827】 [Hnoi2017]礼物
BZOJ4827 [Hnoi2017]礼物 Solution 如果一串数的增加,不就等于另一串数减吗? 那么我们可以把答案写成另一个形式: \(ans=\sum_{i=1}^n(x_i-y_i+C)^ ...
- [bzoj4827][Hnoi2017]礼物_FFT
礼物 bzoj-4827 Hnoi-2017 题目大意:给定两个长度为$n$的手环,第一个手环上的$n$个权值为$x_i$,第二个为$y_i$.现在我可以同时将所有的$x_i$同时加上自然数$c$.我 ...
- 【ZJOI2017 Round2练习&BZOJ4827】D1T3 gift(FFT)
题意: 思路:可以看出题目所要最小化的是这样一个形式: 拆出每一项之后发现会变化的项只有sigma a[i]*b[i+t]与c^2,c*(a[i]-b[i]) c可以在外层枚举,剩下的只有sigma ...
- [BZOJ4827][Hnoi2017]礼物(FFT)
4827: [Hnoi2017]礼物 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1315 Solved: 915[Submit][Status] ...
- bzoj4827 [Hnoi2017]礼物
Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在 ...
- bzoj千题计划303:bzoj4827: [Hnoi2017]礼物
https://www.lydsy.com/JudgeOnline/problem.php?id=4827 式子化简一下,发现最后只跟 Σ xi*yi 有关 第二个序列反转,就可以用FFT优化 注意: ...
- 【BZOJ4827】【HNOI2017】礼物
强省HN弱省HA……(读作强省湖南弱省蛤 原题: 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个 ...
- 2018.11.16 bzoj4827: [Hnoi2017]礼物(ntt)
传送门 nttnttntt 入门题. 考虑展开要求的式子∑i=0n−1(xi−yi−c)2\sum_{i=0}^{n-1}(x_i-y_i-c)^2∑i=0n−1(xi−yi−c)2 => ...
随机推荐
- DataSource是什么
public interface DataSource 该工厂用于提供到此 DataSource 对象表示的物理数据源的连接.作为 DriverManager(二者区别:http://tobylxy. ...
- 如何与强势的人相处zz
要和强势的人相处良好,须知道强势的人有两个很显著的特点:一.以自我观点为中心.二.怕别人否定自己.强势的主要作用也有两个:一.支配别人.二.掩盖自卑. 首先,要区分一下强势的人和特立独行的人,这两类人 ...
- Linux问题,磁盘分区打不开了
Metadata kept in Windows cache, refused to mount. chkdsk /f http://www.bubuko.com/infodetail-1184937 ...
- eclipse 导入web项目时常见错误
1. JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java B ...
- 【BZOJ3052】[wc2013]糖果公园 带修改的树上莫队
[BZOJ3052][wc2013]糖果公园 Description Input Output Sample Input Sample Input Sample Output 84 131 27 84 ...
- flume采集微信小程序数据
flume采集微信小程序数据 flume收集前端埋点数据[1]POST请求http://f.x.com:50000数据格式: JsonArray数据格式示例:[{ "headers" ...
- struts2的核心和工作原理 (转)
转自--------http://blog.csdn.net/laner0515/article/details/27692673 在学习struts2之前,首先我们要明白使用struts2的目的是什 ...
- 阿里妈妈-RAP项目的实践(1)
在同事的推荐下,去了解了一下http://thx.github.io/RAP/study.html#,它是发现在前后端分离开发的神器 下面我们来简单上一组代码,来简单了解一下rap <!DOCT ...
- [通信]Linux User层和Kernel层常用的通信方式
转自:https://bbs.csdn.net/topics/390991551?page=1 netlink:https://blog.csdn.net/stone8761/article/deta ...
- Windows窗口程序从创建到关闭产生的消息
Windows是消息驱动的,理解消息机制及消息循环是特别重要.知道在什么情况下产生什么消息会让我们对程序有更好的控制.Windows给应用程序发消息,有些会加入应用程序的消息队列,也是就是队列消息.有 ...