题意: 思路:可以看出题目所要最小化的是这样一个形式: 拆出每一项之后发现会变化的项只有sigma a[i]*b[i+t]与c^2,c*(a[i]-b[i]) c可以在外层枚举,剩下的只有sigma a[i]*b[i+t] (i=0..n-1) 因为FFT只能解决simga a[i]*b[n-i] 所以我们可以把a翻转,这样就化成了如上的形式 c[n+t+1]=a[n-i+1]*b[i+t] (i=0..n-1) 取出最小(大)的c[i],与外层枚举的c共同求出答案,取最小值 FFT模板,值得一…
题意 题目链接 Sol 越来越菜了..裸的FFT写了1h.. 思路比较简单,直接把 \(\sum (x_i - y_i + c)^2\) 拆开 发现能提出一坨东西,然后与c有关的部分是关于C的二次函数可以直接算最优取值 剩下的要求的就是\(max (\sum x_i y_i)\) 画画图就知道把y序列倒过来就是个裸的FFT了. #include<bits/stdc++.h> #define Pair pair<int, int> #define MP(x, y) make_pair…
Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一天,我的室友突 然发现他好像拿错了一个手环,而且已经没时间去更换它了!他只能使用一种特殊的方法,将其中一个手环中所有 装饰物的亮度增加一个相同的自然数 c(即非负整数).并且由于这个手环是一个圆,可以以任意的角度旋转它, 但是由于上面 装饰物的方向是固定的,所以手环不能翻转.需要在经过亮…
………………………………………………………………………… DAY1:听说是湖南的题 T1:spaly?毫无想法,写个暴力压压惊 T2:尼克杨问号脸 T3:FFT我不会啊,70points已经尽力了…
题意: 思路:From http://blog.csdn.net/neither_nor/article/details/70211150 对每个点i,单调栈求出左边和右边第一个大于i的位置,记为l[i]和r[i] 那么(l[i],r[i])会产生p1的贡献 左端点为l[i],右端点在[i+1,r-1]的点对都会产生p1的贡献 右端点为r[i],左端点在[l+1,i-1]的点对都会产生p2的贡献 将点对看成平面上的点,横坐标左端点纵坐标右端点,上述贡献分别对应单点加和线段加 查询就是矩形求和 F…
[BZOJ4827][HNOI2017]礼物(FFT) 题面 Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一天,我的室友突 然发现他好像拿错了一个手环,而且已经没时间去更换它了!他只能使用一种特殊的方法,将其中一个手环中所有 装饰物的亮度增加一个相同的自然数 c(即非负整数).并且由于这个手环是一个圆,可以以任意的角度旋转它, 但…
原文链接http://www.cnblogs.com/zhouzhendong/p/8823962.html 题目传送门 - BZOJ4827 题意 有两个长为$n$的序列$x$和$y$,序列$x,y$的第$i$项分别是$x_i,y_i$. 选择一个序列$A$,现在你可以对它进行如下两种操作: $1.$ 得到一个和$A$循环同构的序列$A'$. $2.$ 给所有的$A'_i$都加上$c(c\in N^+)$,得到序列$A''$. 你进行上面两个操作之后,得到的序列分别为$x'',y''$(注意$…
4827: [Hnoi2017]礼物 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1315  Solved: 915[Submit][Status][Discuss] Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一天,我的室友突 然发现他好像拿错了一个手环,而且已经没时间去更换它…
题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一天,我的室友突然发现他好像拿错了一个手环,而且已经没时间去更换它了!他只能使用一种特殊的方法,将其中一个手环中所有装饰物的亮度增加一个相同的自然数 c(即非负整数).并且由于这个手环是一个圆,可以以任意的角度旋转它,但是由于上面 装饰物的方向是固定的,所以手环不能翻转.需要在经过亮度改造和旋转之后,使…
题面 传送门 思路 首先,有一个结论:两个手环增加非负整数亮度,等于其中一个增加一个整数亮度(可以为负) 我们令增加量为$x$,旋转以后的原数列为${a}{b}$那么现在的费用就是: $\sum_{i=1}^n\left(a_i+x-b_i\right)^2$ 我们把第i项拿出来拆开,得到: $\left(a_i+x-b_i\right)^2=a_i^2+b_i^2+x^2+2a_ix-2a_ib_i-2b_ix$ 那么原式变成了 $\sum_{i=1}^na_i^2+\sum_{i=1}^nb…
题意: 思路:分块 使用树状数组维护sum[i]的前缀和 使用主席树维护root到u的路径上点的编号出现的个数 每次操作如果是修改就加入队列 如果是询问,考虑块内操作对询问的影响,每次在x点加上y会使x到root的点sum都加上y 每根号n次操作就暴力重构一次,清空队列并求出新的sum[i]的前缀和 ..]of record l,r:longint; s:int64; end; sum,bit:..]of int64; stk:..,..]of longint; head,vet,next,fa…
题意: 100%的数据:|Ax|,|Ay|,|Bx|,|By| <= 500, 0 <= n,Ex,Ey <= 500 思路:听说这是一道原题 只能往右或者下走一步且有禁止点的简化版是CF559C 然而这道题并没有这么简单 以下开始转化: 转化后套用弱化版做法即可 ; ..]of int64; dp:..]of int64; x,y:..]of longint; ex,ey,sx,sy,ax,ay,bx,by:int64; n,n1,i,j:longint; u,v,eps:double…
官方题解:http://wyfcyx.is-programmer.com/posts/95490.html A 目前只会30分的暴力……DP好像很神的样子0.0(听说可以多次随机强行算? //Round2 A #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define rep(i,n) for(int i=0…
Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一天,我的室友突然发现他好像拿错了一个手环,而且已经没时间去更换它了!他只能使用一种特殊的方法,将其中一个手环中所有装饰物的亮度增加一个相同的自然数 c(即非负整数).并且由于这个手环是一个圆,可以以任意的角度旋转它,但是由于上面 装饰物的方向是固定的,所以手环不能翻转.需要在经过亮度改造…
前言.FFT  NTT 算法 网上有很多,这里不再赘述. 模板见我的代码库: FFT:戳我 NTT:戳我 正经向:FFT题目解题思路 \(FFT\)这个玩意不可能直接裸考的..... 其实一般\(FFT\)的题目难点不在于\(FFT\),而在于构造多项式与卷积. 两个经典例题: [ZJOI2014]力 给定序列\(\{ q[1],q[2],....q[n]\}\) 定义:\(Ej = \sum_{i<j} \frac{q[i]}{(i-j)^2} - \sum_{i>j} \frac{q[i]…
原文链接https://www.cnblogs.com/zhouzhendong/p/Fast-Fourier-Transform.html 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/例题与常用套路[入门] 前置技能 对复数以及复平面有一定的了解 对数论要求了解:逆元,原根,中国剩余定理 对分治有充足的认识 对多项式有一定的认识,并会写 $O(n^2)$ 的高精度乘法 本文概要 多项式定义及基本卷积形式 $Karatsuba$ 乘法 多项式的系数表示与点值表示,以及拉格朗日插值法…
无实力非既得利益的$xrdog$作为一名外卡选手去参加ZJOI2017啦... Day 0: 颓?(细节待填坑..) Day 1: 上午我来到讲课现场发现讲课内容是:搜索专题  QwQ不太清醒的我一下吓了一跳,莫不是走错到了第二课堂(ZJOI也没有这东西啊)... 虽然说讲题人讲得也比较有趣(导致我没有睡着...)讲得东西也比较全面,但是在学$DLX$的时候有几分钟掉线了导致之后没有很听懂,讲的题目也较那啥,毕竟是搜索没有办法啊.收获不是很大...但是那道中位数的题目还是很可以的,被剧透了要考中…
BZOJ4827 [Hnoi2017]礼物 Solution 如果一串数的增加,不就等于另一串数减吗? 那么我们可以把答案写成另一个形式: \(ans=\sum_{i=1}^n(x_i-y_i+C)^2\) \(y\)可以是重新排列 那么疯狂拆一下式子,化简之后就是: \(ans=\sum_{i=1}^nx_i^2+\sum_{i=1}^ny_i^2+\sum_{i=1}^nC^2+2*C*\sum_{i=1}^n(x_i-y_i)-2*\sum_{i=1}^nx_i*y_i​\) 如果我们枚举…
$Day$ $-1$ 听说可以去$ZJOI2017$打酱油,终于可以出去走走辣$QAQ$... 上次出去打比赛似乎是$PKUSC$?? 好吧,至少可以一览国家预备队爷们的风采... 准备把膝盖留在浙江温州了... $Day$ $0$ 上午$11:00$就放学辣,从机房出来的时候一副滚粗既视感23333.回家准备行李.   校车把我们送到机场,办完手续听说还有$1$个多小时才登机. 之后那当然是颓颓颓啦... 感觉自从高中开始搞$OI$以来就没有出去玩过了?退役之后一定要把中国剩下几个没去过的地方…
题面 思路 这题很像bzoj4827礼物 还是一样的思路,我们把$y$倍长,$y[i+k]=y[i]+n$ 然后令$f(s,c)$表示从$y$的第$s$个开始匹配,位置偏移量为$c$的答案 可以得到$f(s,c)=\sum_{i=0}^{n-1}(x_i-y_{i+s}+c)^2=\sum_{i=0}^{n-1}(x_i^2+y_{i+s}+c^2+2x_ic-2y_{i+s}x-2x_iy_{i+s})$ 我们可以把右边这个式子视为关于$c$的二次函数 用$FFT$可以快速得到不同的$s$下,…
礼物 bzoj-4827 Hnoi-2017 题目大意:给定两个长度为$n$的手环,第一个手环上的$n$个权值为$x_i$,第二个为$y_i$.现在我可以同时将所有的$x_i$同时加上自然数$c$.我也可以将第一个手环任意旋转.旋转后每一个$x$对应一个$y$,那么代价为$\sum\limits_{i=0}^{n-1} (x_i-y_i)^2$.求最小代价. 注释:$1\le n\le 10^5$,$0\le maxval \le 100$. 想法: 水题啊..... 推推式子,我们假设就加了$…
打算写一个多项式总结. 虽然自己菜得太真实了. 好像四级标题太小了,下次写博客的时候再考虑一下. 模板 \(FFT\)模板 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <cctype> #include <algorithm> #define rin(i,a,b)…
Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts of money. Each of these friends might or might not give some money to any or all of the other friends. Likewise, each friend might or might not receiv…
对32K*32K的随机数矩阵进行FFT变换,数的格式是32位浮点数.将产生的数据存放在堆上,对每一行数据进行N=32K的FFT,记录32K次fft的时间. 比较串行for循环和并行for循环的运行时间. //并行计算//调用openmp,通过g++ -fopenmp test.cpp -o out 编译程序#pragma omp parallel for ;i<LEN;i++) fft(num[i],LEN,); 最终的运行时间:247,844,013 us 而串行fft,不调用openmp,它…
2179: FFT快速傅立叶 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2978  Solved: 1523[Submit][Status][Discuss] Description 给出两个n位10进制整数x和y,你需要计算x*y. Input 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. Output 输出一行,即x*y的结果. Sample Input 1 3 4 Sample Outpu…
应该这样来理解这个问题: 补0后的DFT(FFT是DFT的快速算法),实际上公式并没变,变化的只是频域项(如:补0前FFT计算得到的是m*2*pi/M处的频域值, 而补0后得到的是n*2*pi/N处的频域值), M为原DFT长度,N变成了补0后的长度.将(-pi,pi)从原来的M份变成了N份,如果将补0前后的这些频域值画在坐标上,其中m*2*pi/M和n*2*pi/N重合的部分,它所对应的频域值(变换后的值)是不变的,而在原来的M份里多了(N-M)份的分量,即在频域内多了(N-M)份插值,这样理…
算算劳资已经多久没学新算法了,又要重新开始学辣.直接扔板子,跑...话说FFT算法导论里讲的真不错,去看下就懂了. //FFT#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; typedef __int64 ll; const double pi = acos(-1.0); +; ; struct Complex {…
题意: 求一个序列中顺序的长度为3的等差数列. SOL: 对于这种计数问题都是用个数的卷积来进行统计.然而对于这个题有顺序的限制,不好直接统计,于是竟然可以分块?惊为天人... 考虑分块以后的序列: 一个块内直接枚举统计三个或两个在块内的. 只有一个在当前块我们假设它是中间那个,对左右其它块做卷积. 但是还是感觉复杂度有点玄学啊... 我比较傻逼...一开始块内统计根本没有想清楚...最后做卷积硬生生把复杂度变成了 $\sqrt{N}*N*log(N)$... 改了一个晚上终于没忍住看标程...…
Description: 上一篇blog. Solution: 同样我们可以用fft来做...就像上次写的那道3-idoit一样,对a做k次卷积就好了. 同样有许多需要注意的地方:我们只是判断可行性,所以为了保证精度如果f大于1就把它变成1; 对于长度也可以慢慢倍增,可以优化复杂度就是写起来麻烦. void change(complex y[],int len) { int i,j,k; for(i = 1, j = len/2;i < len-1; i++) { if(i < j)swap(…
数学相关一直都好弱啊>_< 窝这个月要补一补数学啦, 先从基础的fft补起吧! 现在做了 道. 窝的fft 模板 (bzoj 2179) #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #define MAXN 200005 #define PI M_PI using namespace std…