【HDOJ 5419】 Victor and Toys

n个玩具 m个区间

每一个玩具有一个beauty值 问任选三个区间 三区间的MINleft~MAXright的和的期望值

预处理一个数组 存放每一个位置被几个区间囊括 这样该位置被选择的概率为c(x,3)/c(m,3)

若beauty数组为w 预处理数组a

期望值即为 w[i]*c(a[i],3)/c(m,3) i∈[1,n]

注意防止乘法爆long long

代码例如以下:

#include <iostream>
#include <cstdio>
#include <cstring>
#define ll long long using namespace std; int w[50001];
int ad[50002]; ll C(ll n)//c(n,3)
{
if(n < 3) return 0;
ll ans = 1;
for(int i = 2; i >= 0; --i)//防爆long long
ans = ans*(n-i)/(3-i); return ans;
} ll gcd(ll a,ll b)//约分
{
ll tmp;
while(b)
{
tmp = b;
b = a%b;
a = tmp;
}
return a;
} int main()
{
int t,n,m,i,l,r;
ll fz,fm,gd,lst; scanf("%d",&t);
while(t--)
{
scanf("%d %d",&n,&m);
for(i = 1; i <= n; ++i)
scanf("%d",&w[i]);
memset(ad,0,sizeof(ad));
for(i = 0; i < m; ++i)
{
scanf("%d %d",&l,&r);
ad[l]++;
ad[r+1]--;
}
if(m < 3)//不这样做会越界。 。血的教训
{
puts("0");
continue;
} fm = C(m); fz = lst = 0;
for(i = 1; i <= n; ++i)//预处理被选次数顺带把期望求了。。
{
lst += ad[i];
fz += w[i]*C(lst);
} gd = gcd(fz,fm);
fz /= gd;
fm /= gd;
if(fm == 1) printf("%I64d\n",fz);
else printf("%I64d/%I64d\n",fz,fm);
} return 0;
}

【HDOJ 5419】 Victor and Toys (排列组合)的更多相关文章

  1. HDOJ 5419 Victor and Toys 树状数组

    分母是一定的C(m,3) 树状数组求每一个数能够在那些段中出现,若x出如今了s段中,分子加上w[x]*C(s,3) Victor and Toys Time Limit: 2000/1000 MS ( ...

  2. HDU - 5419 Victor and Toys(组合计数)

    http://acm.hdu.edu.cn/showproblem.php?pid=5419 题意 n个物品,标号1-n,物品i有权值wi.现在有m个区间[l,r],从中任意选三个区间i,j,k,求物 ...

  3. HDU 5419——Victor and Toys——————【线段树|差分前缀和】

    Victor and Toys Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/131072 K (Java/Others ...

  4. 学习sql中的排列组合,在园子里搜着看于是。。。

    学习sql中的排列组合,在园子里搜着看,看到篇文章,于是自己(新手)用了最最原始的sql去写出来: --需求----B, C, F, M and S住在一座房子的不同楼层.--B 不住顶层.C 不住底 ...

  5. .NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)

    今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinatorics组件的使用情况,其实这个组件我5年前就开始用了,非常方便,麻雀虽小五脏俱全.所以一直非常喜欢,才写了几 ...

  6. 【原创】开源.NET排列组合组件KwCombinatorics使用(三)——笛卡尔积组合

           本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...

  7. 【原创】开源.NET排列组合组件KwCombinatorics使用(二)——排列生成

           本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...

  8. 【原创】开源.NET排列组合组件KwCombinatorics使用(一)—组合生成

           本博客所有文章分类的总目录:本博客博文总目录-实时更新 本博客其他.NET开源项目文章目录:[目录]本博客其他.NET开源项目文章目录 KwCombinatorics组件文章目录: 1. ...

  9. hdu1521 排列组合(指数型母函数)

    题意: 有n种物品,并且知道每种物品的数量ki.要求从中选出m件物品的排数.         (全题文末) 知识点: 普通母函数 指数型母函数:(用来求解多重集的排列问题) n个元素,其中a1,a2, ...

随机推荐

  1. Zookeeper概念学习系列之zookeeper的数据模型

    1.层次化的目录结构,命名符合常规文件系统规范. 2.每个节点在zookeeper中叫做znode,并且有其有一个唯一的路径标识. 3.znode中的数据可以有多个版本,比如某一路径下存有多个数据版本 ...

  2. 移动web——touch事件介绍

    基本概念 1.在移动web端点击事件或者滑动屏幕.捏合等动作都是由touchstar.touchmove.touchend这三个事件组合在一起使用的 2.click事件在移动端会有0.2秒的延迟,下面 ...

  3. SYN(synchronous)TCP/IP

    SYN(synchronous)是TCP/IP建立连接时使用的握手信号.在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息, ...

  4. jinkins配置python虚拟环境

    cd /root/.virtualenvs . automationVenv/bin/activate cd /home/wangju/gitProject/automationtest#cd pyt ...

  5. cstringlist不完全用法

    CStringList是CString链表,在MFC编程中STL之外的另一选择,用起来更加简洁. 插入数据:AddTail();AddHead() 删除数据:RemoveAll();RemoveAt( ...

  6. 原生js实现瀑布流效果

    参考此篇:https://segmentfault.com/a/1190000012621936 以下为个人测试中: css: .masonry{ width:100%; } .item{ posit ...

  7. CAD保存高版本的dwg(com接口)

    主要用到函数说明: MxDrawXCustomFunction::Mx_SaveDwgEx 保存DWG文件,可以设置保存的文件版本号和密码,详细说明如下: 参数 说明 IN CString sFile ...

  8. windows设置右键菜单

    1. 打开注册表,(win + R,输入regedit) 2. 在 HKEY_CLASSES_ROOT\Directory\Background\shell 中,新建项:如(cmder),在 cmde ...

  9. function&箭头函数

    JS中this到底指向谁? function:谁调用指向谁 var id = '654321' var handler = { id: '123456', init: function() { con ...

  10. Uncaught TypeError: str.replace is not a function

    在做审核页面时,点击审核通过按钮不执行 后来F12控制台查看发现有报错 是因为flisnullandxyzero未执行 然后找出这个方法,此方法为公共方法,将这个方法复制出来 然后使用console. ...