UVALIVE6886 Golf Bot (FFT)】的更多相关文章

题意:打高尔夫 给你n个距离表示你一次可以把球打远的距离 然后对于m个询问 问能否在两杆内把球打进洞 题解:平方一下就好 注意一下x0的系数为1表示打一杆 才发现数组应该开MAXN * 4 之前写的题数据有点不严谨了 #include <stdio.h> #include <algorithm> #include <iostream> #include <math.h> using namespace std; const double PI = acos(…
Golf Bot 题目连接: http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=129724 Description Do you like golf? I hate it. I hate golf so much that I decided to build the ultimate golf robot, a robot that will never miss a shot. I simply place it…
大致题意: 给你N个整数和M个整数,问这M个数中,有几个数可以表达成那N个整数中一个或者两个整数的和. 分析: 算是半个裸的FFT.FFT可以用来在nlongn时间内求高精度乘法,我们先模拟一下乘法. A4A3A2A1A0*B4B3B2B1B0  Ai,Bj表示位数,结果保存在Ck中 4   3   2   1   0(下标) A4 A3 A2 A1 A0 B4 B3 B2 B1 B0 先不考虑进位 那么C0=A0*B0 C1=A0*B1+A1*B0 Ck=sum(Ai*Bj) (i+j=k)…
题目 Source https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4898 Description Do you like golf? I hate it. I hate golf so much that I decided to build the ultimate golf robot, a robot that wi…
题目链接: http://acm.hust.edu.cn/vjudge/problem/129724 Golf Bot Time Limit: 15000MS 题意 给你n个数,m个查询,对于每个查询,问能不能用n个数中的一个或两个(同一个数可以取两次)相加凑出来. 题解 多项式乘法,用快速傅里叶变化加速,时间复杂度:O(nlogn). #include<map> #include<set> #include<cmath> #include<queue> #…
Problem description Input The first line has one integer: N, the number of different distances the Golf Bot can shoot. Each of the following N lines has one integer, ki, the distance marked in position i of the knob. Next line has one integer: M, the…
https://vjudge.net/problem/Gym-100783C 题意: 给出n个数,然后有m次查询,每次输入一个数x,问x能否由n个数中2个及2个以下的数相加组成. 思路:题意很简单,但是如果直接去算要超时. 可以利用傅里叶,计算出两个卷积中的数相加的所有可能性. #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<strin…
题意:给你N个数字,每次利用这N个数字中最多两个数字进行加法运算,来得到目标中的M个数字. Solution: 我们先来看看多项式乘法:\(A(x)=\sum_{i=0}^{n-1}a_ix^i\),\(B(x)=\sum_{i=0}^{n-1}b_ix^i\),\(C(x)=A(x)B(x)\) \[ c_k=\sum_{i+j=k,0\le i,j\le n}a_ib_jx^k \] 有没有发现什么?我们可以将a复制一份为b,对于x,如果x在a里出现了,则令\(a_x=b_x=1\),特别的…
FFT学习参考这两篇博客,很详细,结合这看,互补. 博客一 博客二 很大一部分题目需要构造多项式相乘来进行计数问题. 1. HDU 1402 A * B Problem Plus 把A和B分别当作多项式的系数. #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> using namespace std; const double PI = acos(-1.0);…
对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,它…