HDU 4609 FFT模板】的更多相关文章

http://acm.hdu.edu.cn/showproblem.php?pid=4609 题意:给你n个数,问任意取三边能够,构成三角形的概率为多少. 思路:使用FFT对所有长度的个数进行卷积(\(C = \{x + y| x \in A, y \in B \} \)),得到所有两边和情况数,再考虑去掉重复的情况.找边并计数的时候再去掉不可能的情况.具体操作看bin神的博客    另FFT还可以用来进行多项式和高精度乘法,又难懂又难用的东西=x= /** @Date : 2016-12-04…
题意:给出一堆数,问从这些数中取3个能组成三角形的概率? sol:其实就是问从这些数里取3个组成三角形有多少种取法 脑洞大开的解法:用FFT 设一开始的数是1 3 3 4 作一个向量x,其中x[i]=边长为i的边的个数 那么就有x=[0 1 0 2 1 0 0 0 0] 令y=x,对x和y作DFT,得到dx和dy.令dn=dx*dy,再对dn作IDFT得到n 那么就得到n=[0 0 1 0 4 2 4 4 1 0 ] 其中n[i]=在x和y中各选一条边,使得两条边之和为i有几种方案 这时得到的n…
题目就是求一个大数的乘法 这里数字的位数有50000的长度,按平时的乘法方式计算,每一位相乘是要n^2的复杂度的,这肯定不行 我们可以将每一位分解后作为系数,如153 = 1*x^2 + 5*x^1 + 3*x^0 (在这里x可以理解成10) 那么两个数字相乘就相当于系数相乘后得到新的系数组合 如153 * 4987 = <3,5,1> * <7,8,9,4> 这相当于卷积的计算,最快的方式就是fft,nlgn的复杂度就能求解,求解得到后再把每一位大于10往前赋值就行了 #incl…
3-idiots Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7804    Accepted Submission(s): 2724 Problem Description King OMeGa catched three men who had been streaking in the street. Looking as i…
思路: http://www.cnblogs.com/kuangbin/archive/2013/07/24/3210565.html 其实我是懒得写了.... 一定要define int long long--(否则不知道自己怎么死的别怪我..) 有用C++写好的虚数 的版本 (是慢一些) (写完本地编译过了 交上去各种CE) 哦 还有.. 不要每回都搞1<<18个初始量,,,,,,, 会T到死的 QAQ 100组数据 .. 每回找最大值就好啦 //By SiriusRen #include…
hdu 4609 3-idiots 题意: 给出\(A_i\),问随机选择一个三元子集,选择的数字构成三角形的三边长的概率. 一开始一直想直接做.... 先生成函数求选两个的方案(注意要减去两次选择同一个的,然后/2),然后统计三角形个数. 枚举三角形最长边,求\(i+j>k,i<k,j<k\)的方案数.后两个条件减去不合法的. 不合法很好统计 \(i \ge k \rightarrow i+j > k\) #include <iostream> #include &l…
// fft模板 HDU 1402 #include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <vector> #include <math.h> #include <memory.h> #include <bits/stdc++.h> using namespace std; #define L…
一点吐槽:我看网上很多分析,都是在分析这个题的时候,讲了半天的FFT,其实我感觉更多的把FFT当工具用就好了 分析:这个题如果数据小,统计两个相加为 x 的个数这一步骤(这个步骤其实就是求卷积啊),完全可以母函数,无奈数据很大,就用FFT了 然后难点在于最后的统计,要减去自身,两个都大的,一大一小,包含自身,这是用到了容斥,再做相似的题的时候,应该多看看这方面 注:再次高度仰慕kuangbin神,这是我FFT的第二题,也是第二次用kuangbin FFT模板 #include <stdio.h>…
FFT模板题,求A*B. 用次FFT模板需要注意的是,N应为2的幂次,不然二进制平摊反转置换会出现死循环. 取出结果值时注意精度,要加上eps才能A. #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; typedef long long ll; const double pi = acos(-1.0); const i…
这是我接触的第一个关于FFT的题目,留个模板. 这题的题解见:http://www.cnblogs.com/kuangbin/archive/2013/07/24/3210565.html. FFT的模板如下: #include<bits/stdc++.h> using namespace std; ; struct Complex { double x,y; Complex(,) :x(_x),y(_y) {} Complex operator + (Complex &tt) { r…