【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. Spring Cloud (5) 分布式配置中心

    Spring Cloud Config 在分布式系统中,由于服务数量很多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,使用Spring Cloud ...

  2. javascript部分知识点

    1:script放置位置: a:<title></title>之后 b:<body>之后 c:<body>中的<div></div&g ...

  3. Spring的核心机制依赖注入

    原文地址:http://developer.51cto.com/art/200610/33311.htm 本文主要讲解依赖注入(设值注入.构造注入),作用是可以使Spring将各层的对象以松耦合的方式 ...

  4. 依存分析 Dependency Parsing

    依存分析 Dependency Parsing 句子成分依存分析主要分为两种:句法级别的和语义级别的 依存句法分析 syntactic dependency parsing 语义依存分词 semant ...

  5. 汇总——WEB前端资源网

    前端攻城师 爱思资源网 HTML5吧 0101后花园 前端网 编程教程和源代码示例 Javascript中文网 Web前端资源网 移动端HTML5资源整理 Web开发者 SegmentFault 前端 ...

  6. C#斐波那契数列方法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. privot函数使用

    语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) ) 将列转化为行 写个小示例 : ...

  8. common_functions.h:64:24: error: token ""__CUDACC_VER__ is no longer supported.

    问题在复现工程https://github.com/google/hdrnet时出现. 现象: 解决: TensorFlow版本问题,升级到版本1.10.0之后,问题解决.

  9. Dinic当前弧优化 模板及教程

    在阅读本文前,建议先自学最大流的Ek算法. 引入 Ek的核心是执行bfs,一旦找到增广路就停下来进行增广.换言之,执行一遍BFS执行一遍DFS,这使得效率大大降低.于是我们可以考虑优化. 核心思路 在 ...

  10. OSI 7层模型和 TCP/IP 5层模型

    网络协议通常分不同层次进行开发,每一层分别负责不同的通行功能. 两种参考模型 OSI 和 TCP/IP, OSI 先有模型后有协议,TCP/IP 则相反. OSI 7层模型 - 应用层 - 表示层 - ...