Description

随机生成一个长度为m且每个元素都为1~n之间的整数的单调不下降序列~(即序列的(i>1)都不小于),(随机生成指每一种可能的序列都等概率被生成)。请问这个序列的众数出现次数期望是多少,有多组数据。
 

Input

第一行一个整数T,为数据组数
接下来T行,每行两个被空格隔开的正整数m,n为序列长度和元素的值的上界。

Output

一共T行,每一行一个实数,为每组数据的答案
如果你的答案与标准答案的误差不超过1e-5,则视为正确

 

Sample Input

4
1 5
3 3
2 9
9 6

Sample Output

1.0000000000
2.2000000000
1.2000000000
4.3146853147
 

Data Constraint

对于10%的数据:n,m<=5,T=1
对于另外20%的数据:m<=15,T<=5
对于另外20%的数据:n,m<=50, T<=5
对于100%的数据:1<=m<=250,1<=n<=1e9,T<=15

 

Hint

对于3 3这一组数据,有以下情况(x为众数出现的次数)
1 1 1 (x = 3) 
1 1 2 (x = 2) 
1 1 3 (x = 2) 
1 2 2 (x = 2) 
1 2 3 (x = 1) 
1 3 3 (x = 2) 
2 2 2 (x = 3) 
2 2 3 (x = 2) 
2 3 3 (x = 2) 
3 3 3 (x = 3) 
所以期望是1/10+2*6/10+3*3/10=22/10

Solution

看看应该是一道dp

可以有这样一个思路

令f(i,j)为构造出的序列长度为i,当前填入序列第j种数,为了限制众数的出现次数,要去除所有众数出现次数大于限定的情况

因此,f(k,i,j)=f(k,i-1,j-1)+f(k,i-1,j)-f(k,i-k-1,j-1),其中k代表限定众数出现次数为k

最后乘上一个组合数就是答案了

#include <stdio.h>
#include <string.h> template<class T> inline void read(T &x)
{
int c=getchar();
for(x=0;c<48||c>57;c=getchar());
for(;c>47&&c<58;c=getchar())x=(x<<1)+(x<<3)+c-48;
} int T,m,n;
long double C[255],f[255][255][255],g[255],ans; int main()
{
freopen("assignment.in","r",stdin);
freopen("assignment.out","w",stdout);
for(int k=1;k<=250;k++)
{
f[k][0][0]=1;
for(int i=1;i<=250;i++)
for(int j=1;j<=i;j++)
{
f[k][i][j]=f[k][i-1][j-1]+f[k][i-1][j];
if(i-k-1>=0)f[k][i][j]-=f[k][i-k-1][j-1];
}
}
for(read(T);T;T--)
{
read(m),read(n);
C[0]=1;
for(int i=1;i<=m;i++)
C[i]=C[i-1]*(n-i+1)/i;
for(int k=1;k<=m;k++)
{
g[k]=0;
for(int j=1;j<=m;j++)
g[k]+=f[k][m][j]*C[j];
}
ans=0;
for(int k=1;k<=m;k++)
ans+=k*(g[k]-g[k-1])/g[m];
printf("%.6f\n",(double)ans);
}
fclose(stdin);
fclose(stdout);
return 0;
}

  

NOI模拟(3.6)Assignment的更多相关文章

  1. 5.30 NOI 模拟

    $5.30\ NOI $模拟 高三大哥最后一次模拟考了,祝他们好运 \(T1\)装箱游戏 显然可以将四种字母之间的空缺当做状态枚举 那么这道题就很显然了 #include<bits/stdc++ ...

  2. 5.23 NOI 模拟

    $5.23\ NOI $模拟 \(T1\)简单的计算几何题 \(zjr:\)我当时没改,那么自己看题解吧 倒是有个简单的随机化方法(能获得\(72pts,\)正确性未知)\(:\) 随机两条切椭圆的平 ...

  3. 5.6 NOI模拟

    \(5.6\ NOI\)模拟 明天就母亲节了,给家里打了个电话(\(lj\ hsez\)断我电话的电,在宿舍打不了,只能用教练手机打了) 其实我不是很能看到自己的\(future,\)甚至看不到高三的 ...

  4. 5.4 NOI模拟

    \(5.4\ NOI\)模拟 \(T1\) 想到分讨,但是暴力输出一下方案之后有很多特别的情况要讨论,就弃了... 假设\(a\)是原序列,\(b\)是我们得到的序列 设\(i\)是最长公共前缀,\( ...

  5. NOI模拟赛 Day1

    [考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...

  6. NOI 模拟赛 #2

    得分非常惨惨,半个小时写的纯暴力 70 分竟然拿了 rank 1... 如果 OYJason 和 wxjor 在可能会被爆踩吧 嘤 T1 欧拉子图 给一个无向图,如果一个边集的导出子图是一个欧拉回路, ...

  7. 【2018.12.10】NOI模拟赛3

    题目 WZJ题解 大概就是全场就我写不过 $FFT$ 系列吧……自闭 T1 奶一口,下次再写不出这种 $NTT$ 裸题题目我就艹了自己 -_-||| 而且这跟我口胡的自创模拟题 $set1$ 的 $T ...

  8. 6.28 NOI模拟赛 好题 状压dp 随机化

    算是一道比较新颖的题目 尽管好像是两年前的省选模拟赛题目.. 对于20%的分数 可以进行爆搜,对于另外20%的数据 因为k很小所以考虑上状压dp. 观察最后答案是一个连通块 从而可以发现这个连通块必然 ...

  9. NOI模拟赛Day5

    T1 有and,xor,or三种操作,每个人手中一个数,求和左边进行某一种运算的最大值,当t==2时,还需要求最大值的个数. test1 20% n<=1000 O(n^2)暴力 test2 2 ...

随机推荐

  1. Luogu P1970 花匠 【线性Dp】 By cellur925

    题目描述 Description 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希望剩下的花 ...

  2. Luogu P3916 图的遍历 【优雅的dfs】【内有待填坑】By cellur925

    说明 • 对于60% 的数据, n,m在1e3内 • 对于100% 的数据, n,m在1e5内. 本弱弱上来就是一顿暴搜打,dfs n次,每次更新答案,复杂度为O(n*n),果然TLE,60分抱回家. ...

  3. [POI2008]激光发射器SZK

    Description 多边形相邻边垂直,边长为整数,边平行坐标轴.要在多边形的点上放一些激光发射器和接收器.满足下列要求: 1发射器和接收器不能放置在同一点: 2发射器发出激光可以沿壁反射,最终到达 ...

  4. 51nod 1096 距离之和最小

    求中位数,注意求中位数前排序.... #include <bits/stdc++.h> using namespace std; #define LL long long const in ...

  5. 人工智能-深度学习(3)TensorFlow 实战一:手写图片识别

    http://gitbook.cn/gitchat/column/59f7e38160c9361563ebea95/topic/59f7e86d60c9361563ebeee5 wiki.jikexu ...

  6. GUID的学习

    GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可 ...

  7. get和post中文乱码原理相关博客

    博客一:  http://blog.csdn.net/saygoodbyetoyou/article/details/16834395 博客二: http://www.jb51.net/article ...

  8. javascript:void(0)与#区别

    javascript:void(0)   鼠标点击时,不会跳转到其他页面,且停留在原地 #   鼠标点击时,不会跳转到其他页面,但会回到顶部

  9. Vue自定义过滤器格式化数字三位加一逗号

    <template> <div class="index-compont"> <div class="totalCount"> ...

  10. android开发学习——关于activity 和 fragment在toolbar上设置menu菜单

    在做一个项目,用的是Android Studio 系统的抽屉源码,但是随着页面的跳转,toolbar的title需要改变,toolbar上的menu菜单也需要改变,在网上找了好久,也尝试了很多,推荐给 ...