BZOJ 3513: [MUTC2013]idiots [FFT]

统计每种长度的木棒数量,先计算出两根棒子能构成的长度,想到卷积。1.拿这个序列卷积自己 2.计算重算的部分,首先是一条边自己和自己的这种情况,另一种是(i,j)和(j,i)这种形式。第一种,可以枚举读入的木棒长度,再长度为其二倍的位置-1;第二种,在第一种处理完之后,直接除2。计算出两根棒子能构成的长度后,我们枚举最长的那条边,答案一定在长度大于它的里面,但是要去掉算了自己的情况,和存在一条边大于最长边的情况。具体公式看代码。这题中间精度差了些就挂了。可以用long long就不要用double。

#include <bits/stdc++.h>
#define pi acos(-1.0)
const int maxn = 300000+5;
using namespace std;
typedef long long ll;
struct E{double real,imag;E(double real=0,double imag=0):real(real),imag(imag){}friend E operator +(E A,E B){return E(A.real+B.real,A.imag+B.imag);}friend E operator -(E A,E B){return E(A.real-B.real,A.imag-B.imag);}friend E operator *(E A,E B){return E(A.real*B.real-A.imag*B.imag,A.imag*B.real+A.real*B.imag);}
};
int n,m,mx,L,rev[maxn];
E f[maxn],rf[maxn],g[maxn],e1[maxn],e2[maxn];
void fft(E *a,int ty,int n){for(int i=0;i<n;++i)if(i<rev[i])swap(a[i],a[rev[i]]);for(int i=1;i<n;i<<=1){E wn=E(cos(pi/i),ty*sin(pi/i));for(int p=(i<<1),j=0;j<n;j+=p){E w(1,0);for(int k=0;k<i;++k,w=w*wn){E x=a[j+k],y=w*a[j+k+i];a[j+k]=x+y;a[j+k+i]=x-y;}}}if(ty==-1)for(int i=0;i<n;++i)a[i].real/=n;
}
E c[maxn];
int T;
ll e[maxn],F[maxn],b[maxn];
int main() {scanf("%d",&T);while(T--) {ll mx = 0;scanf("%lld",&n); L=0;memset(c,0,sizeof(c));memset(e,0,sizeof(e));memset(rev,0,sizeof(rev));memset(F,0,sizeof(F));for(int i=1;i<=n;++i) {scanf("%lld",&e[i]);++F[e[i]];mx = max(mx,e[i]);}m = mx*2;for(mx=1;mx<=m;mx<<=1)++L;for(int i=0;i<mx;++i)rev[i]=(rev[i>>1]>>1)|((i&1)<<(L-1));for(int i=0;i<mx;++i)c[i]=F[i];fft(c,1,mx);for(int i=0;i<mx;++i) c[i]=c[i]*c[i];fft(c,-1,mx);for(int i=0;i<mx;++i)b[i] = (ll)(c[i].real+0.5);for(int i=1;i<=n;++i) --b[e[i]<<1];for(int i=0;i<mx;++i) b[i]>>=1;for(int i=1;i<mx;++i) b[i]+=b[i-1];sort(e+1,e+1+n);ll ans = 0;for(int i=1;i<=n;++i){ans = ans + (ll)(b[mx-1]-b[e[i]]);ans -= (ll)(n-1LL);ans -= (ll)(n-i)*(i-1);ans -= (ll)(n-i)*(n-i-1LL)/2LL;}ll t = 1LL*n*(n-1LL)*(n-2LL)/6LL;printf("%.7f\n",1.0*ans/t);}
}

  

转载于:https://www.cnblogs.com/RRRR-wys/p/8967563.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【暴力】I Liked Matrix!

I Liked Matrix! 题目大意&#xff1a; 有一个矩阵&#xff0c;求出某一些子矩阵内最大的数 原题&#xff1a; 题目描述 给定一个 n ∗ m 的矩阵 A&#xff0c;对其进行 q 次询问&#xff1a;以 (x1, y1) 为左上角&#xff0c;(x2, y2) 为右下角的子矩 阵中&#xff0c;所…

jzoj6805-NOIP2020.9.26模拟speike【扫描线】

正题 题目大意 一个平面上&#xff0c;起点是(0,0)(0,0)(0,0)&#xff0c;终点是(0,t)(0,t)(0,t)。有nnn个没有共同面积的矩形障碍物&#xff0c;对于每个障碍物不可以从内部穿过而可以从边上走过。求最短路。 解题思路 因为没有共同面积所以横坐标不会变小。并且只有在边界处…

【dfs】I Like Matrix!

I Like Matrix! 题目大意&#xff1a; 有一个矩阵&#xff0c;还有一些走法&#xff0c;从1,1开始可以走到多少个位置 原题&#xff1a; 题目描述 给定 k 种移动方式&#xff1a;从 (i, j) 移动到 (i xk, j yk)&#xff08;xk, yk > 0&#xff09;。询问在一个 n ∗ …

Full_of_Boys训练3总结

题目来源: 2016-2017 ACM-ICPC Pacific Northwest Regional Contest E.Enclosure 先计算出内外两个凸包&#xff0c;枚举大凸包上的点&#xff0c;在小凸包上找到两个切点。计算面积时&#xff0c;就相当于删掉几条原先的边&#xff0c;加上一个新的三角形。同时&#xff0c;可…

P3188-[HNOI2007]梦幻岛宝珠【背包】

正题 题目链接:https://www.luogu.com.cn/problem/P3188 题目大意 nnn个物品&#xff0c;大小为WWW的背包。 每个物品的大小可以表示为wiai2biw_ia_i2^{b_i}wi​ai​2bi​&#xff0c;有价值viv_ivi​。 求选择一些物品不超过背包的大小使得价值最大。 解题思路 设先计算bi…

【DP】I Will Like Matrix!

I Will Like Matrix! 题目大意&#xff1a; 有一个01矩阵&#xff0c;a[i][j1]a[i][j1]a[i][j1]和a[i1][j]a[i1][j]a[i1][j]必须大于a[i][j]a[i][j]a[i][j],问有多少种填法 原题&#xff1a; 题目描述 在一个 n ∗ m 的矩阵 A 的所有位置中分别填入 0 或 1&#xff0c;要求…

用Way.EntityDB进行Entity Framework Core数据库建模

Way.EntityDB是一个基于EF Core的数据层框架&#xff0c;它取消了EF Core的Migration机制&#xff0c;因为Migration并不是通用的&#xff0c;比如说sql server生成的migration&#xff0c;如果换成sqlite&#xff0c;运行时会报错的&#xff0c;也就是数据库不能更换。Way.Ent…

AT4513-[AGC030D]InversionSum【dp】

正题 题目链接:https://atcoder.jp/contests/agc030/tasks/agc030_d 题目大意 nnn个数&#xff0c;ppp次操作可以选择操作或者不操作&#xff0c;询问所有情况下逆序对的总和。 解题思路 转换成期望的问题&#xff0c;设fi,jf_{i,j}fi,j​表示所有情况下ai<aja_i<a_jai…

【dfs】【模拟】【树】I Like Matrix Forever!

I Like Matrix Forever! 题目大意&#xff1a; 有一个01矩阵&#xff0c;有一些操作&#xff1a;反转一个位置的数&#xff0c;反转一行的数&#xff0c;反转一列的数&#xff0c;回到第i次操作&#xff0c;每一次操作还要输出1的个数 原题&#xff1a; 题目描述 对一个 n…

Full_of_Boys训练4总结

题目来源&#xff1a;2017-2018 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2017) A.Cakey McCakeFace #include <bits/stdc.h> #define pb(x) push_back(x) typedef long long ll; const int maxn 20007; using namespace std; int n,m; ll …

.NET Core开发日志——Runtime IDentifier

.NET Core对于传统.NET开发人员而言是既熟悉又陌生的新平台&#xff0c;所以有时遇上出乎意料的事情也纯属正常情况。这时只需点耐心&#xff0c;多查查资料&#xff0c;努力找到原因&#xff0c;也未尝不是件有意义的体验。比如当建完一个最简单的控制台应用程序&#xff1a;d…

P3723-[AH2017/HNOI2017]礼物【FFT】

正题 题目链接:https://www.luogu.com.cn/problem/P3723 题目大意 两个长度为nnn的序列xxx和yyy&#xff0c;可以旋转序列xxx之后让一个序列的所有数加上一个非负整数ccc。 要求最小化∑i1n(xi−yi)2\sum_{i1}^n(x_i-y_i)^2i1∑n​(xi​−yi​)2 解题思路 其实就是要求最小…

初一模拟赛总结(5.11)

成绩&#xff1a; rank是有算其他dalaodalaodalao的 rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4T5T5T5333lyflyflyf420420420100100100100100100100100100100100100202020444hkyhkyhky400400400100100100100100100100100100100100100000444fyfyfy40040…

Full_of_Boys训练5总结

题目来源&#xff1a;2017-2018 ACM-ICPC, NEERC, Moscow Subregional Contest A. Advertising Strategy 贪心方法&#xff1a;把一部分k放到初始值&#xff0c;剩下一部分&#xff0c;等到最后用。然后&#xff0c;枚举第一部分放多少即可。 #include <bits/stdc.h> typ…

C#语法——await与async的正确打开方式

C#5.0推出了新语法&#xff0c;await与async&#xff0c;但相信大家还是很少使用它们。关于await与async有很多文章讲解&#xff0c;但有没有这样一种感觉&#xff0c;你看完后&#xff0c;总感觉这东西很不错&#xff0c;但用的时候&#xff0c;总是想不起来&#xff0c;或者不…

jzoj1753-锻炼身体【单调队列】

正题 题目大意 n∗mn*mn∗m的有障碍物的网格&#xff0c;开始在(xs,ys)(x_s,y_s)(xs​,ys​)。有kkk段时间网格会倾斜&#xff0c;对于倾斜的方向可以选择移动或者不移动&#xff0c;求最长移动距离。 解题思路 因为每段时间方向唯一&#xff0c;所以我们对于每一列或每一行分…

【并查集】打击犯罪(ssl 2342)

打击犯罪 ssl 2342 题目大意&#xff1a; 有n个人某些人之间有连接&#xff08;连接成一个团伙&#xff09;&#xff0c;现在要最大的团伙人数不大于n/2&#xff0c;要最少要删掉几个人&#xff08;要按顺序删&#xff09; 原题&#xff1a; 题目描述&#xff1a; 某个地…

Full_of_Boys训练6总结

题目来源&#xff1a;2014-2015 ACM-ICPC, Asia Xian Regional Contest F. Color 第一道二项式反演。。膜题解: https://www.cnblogs.com/wmrv587/p/6681953.html #include<bits/stdc.h> typedef long long ll; const ll mod 1e9 7; using namespace std; ll q_pow(ll …

好代码是管出来的——.Net Core集成测试与数据驱动测试

软件的单元测试关注是的软件最小可执行单元是否能够正常执行&#xff0c;但是软件是由一个个最小执行单元组成的集合体&#xff0c;单元与单元之间存在着种种依赖或联系&#xff0c;所以在软件开发时仅仅确保最小单元的正确往往是不够的&#xff0c;为了保证软件能够正确运行&a…

Full_of_Boys训练7总结

题目来源&#xff1a;2016沈阳区域赛 C.Recursive sequence 矩阵快速幂&#xff0c;思路来自oldz #include <bits/stdc.h> typedef unsigned long long ll; const ll mod2147493647; using namespace std; ll A[7][7]{{1,0,0,0,0,0,0},{1,1,0,0,0,0,0},{1,2,1,0,0,0,0},{…