FFT
luoyuef
这个作者很懒,什么都没留下…
展开
-
HDU4609 3-idiots
给定n条线段,随机选3条,输出三条线段能组成三角形的概率。考虑暴力。枚举两条线段,第三条前缀和查询。O(n2)O(n2)O(n^2)在O(nlogn)O(nlogn)O(nlogn)时间内 枚举两条线段不太好办。换种思路考虑。如果我们枚举最长边,去找2个短边之和>最长边的数量。设f(x)f(x)f(x)为长度为x的线段数量。 求f(x)f(x)f(x)的卷积g(x)g(x)g(x)。...原创 2018-04-08 17:01:48 · 164 阅读 · 0 评论 -
BZOJ 2194:
一万年没有更新过博客啦。。把之前做过的题都慢慢补上吧= =请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5。 a,b中的元素均为小于等于100的非负整数。题意就是c i是a和b中距离差为定值k的元素的乘积。 翻转b数组后变为卷积形式。。直接做就好了#include<bits/stdc++.h...原创 2018-04-02 10:47:56 · 159 阅读 · 0 评论 -
高精度乘法
#include<bits/stdc++.h>using namespace std;const double Pi=acos(-1);const int MAXN=150000;struct cp{ double x,y; cp (double xx=0,double yy=0){x=xx,y=yy;}}a[MAXN],b[MAXN];cp oper...原创 2018-04-02 10:50:53 · 141 阅读 · 0 评论 -
ZJOI 2014 力
将Fi代入Ei=qi可消去Fj中的qj。 (i-j)²可看做g(i-j) 求两个卷积。 注意考虑翻转后对应的位置。#include<bits/stdc++.h>using namespace std;const double Pi=acos(-1);const int MAXN=4e5+5;double q1[MAXN],q2[MAXN];struct c...原创 2018-04-02 14:12:13 · 142 阅读 · 0 评论 -
[AH2017/HNOI2017]礼物
给定两个序列A={a1..an},B={b1..bn}; 支持对序列B进行两种操作 1 整体右移 bi变成bi+1 bn变成b1 2 整体加c 最小化sigma{ (ai-bi)²}如果只有整体加c操作。 即为 最小化sigma{ (ai-bi+c)²}的值。解得sigma xi + sigma yi - sigma 2xiyi +元素个数*c²+ 2(sigma ...原创 2018-04-02 16:33:37 · 317 阅读 · 0 评论 -
BZOJ4503 两个串
兔子们在玩两个串的游戏。给定两个字符串S和T,兔子们想知道T在S中出现了几次, 分别在哪些位置出现。注意T中可能有“?”字符,这个字符可以匹配任何字符。给cjr的题解跪啦~我这种菜鸡根本想不到这题怎么做呀qwq如果没有通配符 考虑两个串匹配的条件 对于每个ai有ai==bi 即ai-bi=0 可转化为 sigma (ai-bi)²=0考虑通配符 如果有通配符 无论ai是否等于b...原创 2018-04-03 10:58:55 · 240 阅读 · 0 评论