当前位置: 首页 > news >正文

深圳制作网站制作公司秦皇岛建筑

深圳制作网站制作公司,秦皇岛建筑,淘宝官网首页入口,资产管理公司网站建设方案快速傅里叶变化有不同的应用场景#xff0c;hdu4609就比较有意思。题目要求是给n个线段#xff0c;随机从中选取三个#xff0c;组成三角形的概率。 初始实在没发现这个怎么和FFT联系起来#xff0c;后来看了下别人的题解才突然想起来#xff1a;组合计数问题可以用多项式…快速傅里叶变化有不同的应用场景hdu4609就比较有意思。题目要求是给n个线段随机从中选取三个组成三角形的概率。 初始实在没发现这个怎么和FFT联系起来后来看了下别人的题解才突然想起来组合计数问题可以用多项式的卷积来解决。于是将给的数据进行卷积相乘利用FFT即可求出三角形任意两条线段组合的可能数目。 然后遍历初始数据将其作为最长边这里一开始也没想明白其实就是只要最长边大于短边之和其他两个不等式也自然可以满足。那么理论上说比它长的所有两边组合可能都可以。当然在这里要考虑三种特殊情况即在两边组合数目中减去这些情况 1.这两个边有可能一个边比最长边长一个边小于最长边 2.其中一个边就是要选的这个边 3.两个边其实都比最长边长这种情况要除以二   PS:G使用的是longlong类型C是_int64好久没写忘记了。 longlong在代码中间乘的运算也要加上否则还是会出错。 #include iostream #include cmath #include algorithm //spell! #include string.h #define MAXN 400040 #define PI acos(-1.0) using namespace std;struct complex { double r,i; complex(double real0.0,double image0.0) { rreal; iimage; } //以下为三种虚数运算的定义 complex operator(const complex o) { return complex(ro.r,io.i); } complex operator-(const complex o) { return complex(r-o.r,i-o.i); } complex operator*(const complex o) { return complex(r*o.r-i*o.i,r*o.ii*o.r); } }x1[MAXN];void bitrev(complex *y,int l) //二进制平摊反转置换 O(logn) { register int i,j,k; for(i1,jl/2;il-1;i) { if(ij) swap(y[i],y[j]); //交换互为下标反转的元素 //ij保证只交换一次 kl/2; while(jk) //由最高位检索遇1变0遇0变1跳出 { j-k; k/2; } if(jk) jk; } } void fft(complex *in,int n,int flag) {int i,j,k;complex u,t;bitrev(in,n);for(int i2;in;ii*2){complex wn(cos((2*PI*flag)/i),sin((2*PI*flag)/i));//初始化单位复根for(j0;jn;jji){complex w(1,0);for(kj;kji/2;k){uin[k];tw*in[ki/2];in[k]ut;in[ki/2]u-t;ww*wn;}}}if(flag-1)for(int i0;in;i)in[i].rin[i].r/n; }int a[100003]; long long res[MAXN]; long long sum[MAXN]; long long num[MAXN]; int main() {int T;scanf(%d,T);while(T--){int n,i;scanf(%d,n);memset(res,0,sizeof(res));memset(sum,0,sizeof(sum));memset(num,0,sizeof(num));for(int j0;jn;j){scanf(%d,a[j]);num[a[j]];}sort(a,an);for(i 0;i a[n-1];i){x1[i].rnum[i];x1[i].i0;}int expandn1;while(expandn2*(a[n-1]1))expandnexpandn*2;for(i a[n-1]1;iexpandn;i){x1[i].r0;x1[i].i0;}fft(x1,expandn,1);for(i0;iexpandn;i)x1[i]x1[i]*x1[i];fft(x1,expandn,-1);for(i0;iexpandn;i){res[i](long long)(x1[i].r0.5);}//去除本身for(i0;in;i)res[a[i]a[i]]--;//变为组合for(i0;iexpandn;i)res[i]res[i]/2;//求出两边之和为i的所有可能//expandn(a[n-1]1)*2;sum[0]res[0];for(i1;iexpandn;i)sum[i]res[i]sum[i-1];long long ans0;for(i0;in;i){anssum[expandn-1]-sum[a[i]];//比长度为a[i]大的所有可能//去除一个大于a[i],一个小于a[i]ansans-(long long)(n-1-i)*i;//去除一个取自己ansans-(n-1);//去除取两个都大ansans-(long long)(n-1-i)*(n-2-i)/2;}long long all (long long)n*(n-1)*(n-2)/6;printf(%.7lf\n,(double)ans/all);} } hdu 4609  转载于:https://www.cnblogs.com/holyprince/p/3596861.html
http://www.huolong8.cn/news/150939/

相关文章:

  • 长沙网站推广有哪些啊网站数据库连接不上的常见问题
  • 网站建设开题报告pptwordpress title description
  • 网站流程表中国最好的影视后期培训学校
  • 支持付费下载系统的网站模板或建站软件学做饼干的网站
  • 请人做网站谁来维护手机访问跳转手机网站
  • 上海专业做网站公司电话asp做的网站
  • 备案信息如何上传的网站上手机版网站建设费用清单
  • 建网站有什么用二维码扫描
  • 用阿里云做网站注意事项苏州企业网页制作
  • 网站被k是怎么回事wordpress近期文章怎么显示时间
  • 门户网站ui设计网站建设教程步骤
  • 深圳网站建设网络推广制作网页链接的软件
  • 网站再就业培训班陕西网站开发公司地址
  • 婚礼做的好的婚庆公司网站金川做网站公司
  • 京东的网站是哪家公司做的制作网页然后把文件上传
  • 福永网站建设多少钱自己的服务器如何做网站
  • 怎么在搜索引擎做网站登记广州做网站开发
  • 昆山 网站建设彩票网站建设与推广
  • 饲料行业怎么做网站开发cms网站系统
  • 石狮网站建设公司注册城乡规划师准考证打印时间
  • 做棋盘游戏辅助的网站装饰网站卧室做炕百度
  • 网站服务器 试用温州模板建站代理
  • 怎么做好邯郸网站建设php网站开发全程实例
  • html5做网站的总结wordpress ssh
  • 行业网站维护wordpress菜单手机显示下拉
  • 数码网站名福田网络推广公司
  • 南京门户网站网站制作企业有哪些
  • 网站建设技术线路选择ktv网站模板
  • 怀来县住房和城乡规划建设局网站中卫网红美食打卡地
  • 计算机网络资源网站建设论文电商平台开发需要哪些技术人员