bzoj千题计划168:bzoj3513: [MUTC2013]idiots

时间:2022-10-03 21:30:18

http://www.lydsy.com/JudgeOnline/problem.php?id=3513

组成三角形的条件:a+b>c

其中,a<c,b<c

若已知

两条线段之和=i 的方案数g[i]

线段长度>i的 线段数量 t[i]

答案是否可以表示为 Σ g[i]*t[i] ?

不能,因为 有c是最大的数的限制

去掉c是最大数的限制:

不能组成三角形的条件:a+b<=c

其中,a<c,b<c

在这里,满足条件的c一定是abc中最大的

所以解题思路是 求出不能组成三角形的方案数S

g[i] 两条线段和为i的方案数

t[i] 线段长度>=i的 线段数

f[i] 线段长度=i的线段数

那么

g的计算:

g[i]= Σ f[j]*f[i-j]

若 i是偶数 g[i]-=f[i/2]  (总长为i,方案数应该是f[i/2]*(f[i/2]-1),在式子中算的是f[i/2]*f[i/2])

g[i]/=2 (每个方案被枚举了两次)

S=Σg[i]*t[i]

tot=C(n,3)

ans=(tot-S)/ tot

用fft 把g的计算优化到 nlogn

多项式:g[]=f[]*f[]

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm> using namespace std; const int N=<<; const double pi=acos(-); struct Complex
{
double x,y;
Complex() { }
Complex(double x_,double y_) : x(x_),y(y_) { }
Complex operator + (Complex P)
{
Complex C;
C.x=x+P.x;
C.y=y+P.y;
return C;
}
Complex operator - (Complex P)
{
Complex C;
C.x=x-P.x;
C.y=y-P.y;
return C;
}
Complex operator * (Complex P)
{
Complex C;
C.x=x*P.x-y*P.y;
C.y=x*P.y+y*P.x;
return C;
}
}; typedef Complex E; E f[N]; long long t[N],g[N]; int n; int r[N]; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} void fft(E *a,int tag)
{
for(int i=;i<n;++i)
if(i<r[i]) swap(a[i],a[r[i]]);
for(int i=;i<n;i<<=)
{
E wn(cos(pi/i),tag*sin(pi/i));
for(int p=i<<,j=;j<n;j+=p)
{
E w(,);
for(int k=;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;
}
}
}
} int main()
{
int T;
read(T);
int a,mx;
long long ans,tot;
while(T--)
{
memset(t,,sizeof(t));
memset(g,,sizeof(g));
memset(f,,sizeof(f));
read(n);
tot=(long long)n*(n-)*(n-)/;
mx=;
for(int i=;i<=n;++i)
{
read(a);
t[a]++;
f[a].x++;
g[a<<]--;
mx=max(mx,a);
}
for(int i=mx-;i;--i) t[i]+=t[i+];
int m=mx-<<;
int bit=;
for(n=;n<=m;n<<=) bit++;
for(int i=;i<n;++i) r[i]=(r[i>>]>>)|((i&)<<bit-);
fft(f,);
for(int i=;i<n;++i) f[i]=f[i]*f[i];
fft(f,-);
for(int i=;i<n;++i) g[i]+=(int)(f[i].x/n+0.5);
ans=;
for(int i=;i<n;++i) ans+=(g[i]>>)*t[i];
ans=tot-ans;
printf("%.7lf\n",ans*1.0/tot);
}
}

3513: [MUTC2013]idiots

Time Limit: 20 Sec  Memory Limit: 128 MB
Submit: 613  Solved: 219
[Submit][Status][Discuss]

Description

给定n个长度分别为a_i的木棒,问随机选择3个木棒能够拼成三角形的概率。

Input

第一行T(T<=100),表示数据组数。
接下来若干行描述T组数据,每组数据第一行是n,接下来一行有n个数表示a_i。
3≤N≤10^5,1≤a_i≤10^5

Output

T行,每行一个整数,四舍五入保留7位小数。

Sample Input

2
4
1 3 3 4
4
2 3 3 4

Sample Output

0.5000000
1.0000000

HINT

T<=20

N<=100000

bzoj千题计划168:bzoj3513: [MUTC2013]idiots的更多相关文章

  1. bzoj千题计划300:bzoj4823&colon; &lbrack;Cqoi2017&rsqb;老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  2. bzoj千题计划196:bzoj4826&colon; &lbrack;Hnoi2017&rsqb;影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  3. bzoj千题计划280:bzoj4592&colon; &lbrack;Shoi2015&rsqb;脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  4. bzoj千题计划177:bzoj1858&colon; &lbrack;Scoi2010&rsqb;序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio&gt ...

  5. bzoj千题计划317:bzoj4650&colon; &lbrack;Noi2016&rsqb;优秀的拆分(后缀数组&plus;差分)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...

  6. bzoj千题计划304:bzoj3676&colon; &lbrack;Apio2014&rsqb;回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...

  7. bzoj千题计划292:bzoj2244&colon; &lbrack;SDOI2011&rsqb;拦截导弹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...

  8. bzoj千题计划278:bzoj4590&colon; &lbrack;Shoi2015&rsqb;自动刷题机

    http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...

  9. bzoj千题计划250:bzoj3670&colon; &lbrack;Noi2014&rsqb;动物园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...

随机推荐

  1. 针对Xcode的警告忽略消除处理

    一.问题描述 html代码如下 <html> <head> <meta charset="utf-8"/> <title>我的网页& ...

  2. 转&colon;Internal Sales Order &lpar;ISO&rpar; Process Flow

    本文介绍下内部销售订单Internal Sales Order(ISO)在Oracle EBS中的流程,内部销售订单和组织间转移(Inter-Organization Transfer,IOT)的作用 ...

  3. &num;include &lt&semi;assert&period;h&gt&semi;

    assert宏 适用于软件测试.调试.排错 被除数不能为0,assert可以用于检测被除数是否为0 #define _CRT_SECURE_NO_WARNINGS //#define NDEBUG// ...

  4. 官方原版Windows XP SP3&lpar;VOL&rpar;中文简体版ISO下载

    今天,向各位朋友推荐今年五月,由MSDN官方集成的XP With SP3专业VOL版.    文 件:Windows XP Professional with Service Pack 3 (x86) ...

  5. &lbrack;转载&rsqb;Android中WebView自适应屏幕

    webview中右下角的缩放按钮能不能去掉 settings.setDisplayZoomControls(false); //隐藏webview缩放按钮 让Webview加载的页面居中显示有我知道的 ...

  6. 松瀚SN8P2711 2722 ADC初始化程序及应用--汇编源码

    /* 松瀚 SN8P2711 2722 ADC初始化程序 及应用实例 */ INIT_ADC: MOV A, #0XB2 // 启动ADC电路 使能AIN通道 B0MOV ADM, A MOV A,# ...

  7. 网站集群架构(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync&plus;Inotify全网备份、Zabbix自动注册全网监控)--技术流ken

    前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高 ...

  8. 【Codeforces Round】 &num;431 &lpar;Div&period; 2&rpar; 题解

    Codeforces Round #431 (Div. 2)  A. Odds and Ends time limit per test 1 second memory limit per test ...

  9. TortoiseSVN 和 VisualSVN

    ylbtech-Miscellaneos:TortoiseSVN 和 VisualSVN 1. TortoiseSVN 百科返回顶部 1-1.百科 TortoiseSVN 是 Subversion 版 ...

  10. 如何修改Windows上某块网卡的MTU的值

    先用如下命令查看所有的网卡以及他们的MTU的值. netsh interface ipv4 show interfaces 使用如下的命令修改他们的MTU为9000.        netsh int ...