hdu5419 Victor and Toys 期望,差分前缀和
来源:互联网 发布:htc g16软件下载 编辑:程序博客网 时间:2024/05/19 02:30
期望的分母是C(m,3),利用差分前缀和处理出每个点被多少区间覆盖,w[i]*C(sum[i],3)即为第i位的贡献。
学习一下期望的求法考虑每个点的贡献。
#include<iostream>#include<cstring>#include<cstdio>#include<ostream>#include<istream>#include<algorithm>#include<queue>#include<string>#include<cmath>#include<set>#include<map>#include<stack>#include<vector>#define fi first#define se second#define ll long long#define pii pair<ll,ll>#define inf (1ll<<50)#define eps 1e-8#define pb push_backusing namespace std;const int maxn=110005;int n,m;int d[maxn];int sum[maxn];ll C(int a){ if(a<3) return 0; return (ll)a*(a-1)*(a-2)/6;}ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b);}int main(){ int t; scanf("%d",&t); int l,r; while(t--) { memset(sum,0,sizeof(sum)); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&d[i]); for(int i=1;i<=m;i++) { scanf("%d%d",&l,&r); sum[l]++; sum[r+1]--; } sum[0]=0; for(int i=1;i<=n;i++) sum[i]=sum[i-1]+sum[i]; ll a=0; for(int i=1;i<=n;i++) { a+=C(sum[i])*d[i]; } ll b=C(m); if(a==0 || b==0) { printf("0\n"); } else { if(a%b==0) printf("%I64d\n",a/b); else { ll g=gcd(a,b); printf("%I64d/%I64d\n",a/g,b/g); } } } return 0;}
0 0
- hdu5419 Victor and Toys 期望,差分前缀和
- hdu 5419 Victor and Toys(期望+差分前缀和)
- 【hdu5419】Victor and Toys
- hdu5419--Victor and Toys(枚举)
- hdu 5419 Victor and Toys
- BestCoder#52 Victor and Toys
- HDU 5419 Victor and Toys
- CF295A Greg and Array(差分+前缀和)
- hdu5419(期望)
- 前缀和与差分
- 【HDOJ 5419】 Victor and Toys (排列组合)
- HDOJ 5419 Victor and Toys 树状数组
- HDU 5419 Victor and Toys ()
- hdu5157 Harry and magic string Manacher算法,差分前缀和
- hdu 5419 Victor and Toys 线段树成段更新
- hdu 5419 Victor and Toys(暴力+组合)
- HDU5419Victor and Toys(树状数组+数学期望)
- 【胡诌】区间问题与差分前缀和
- ECMAScript6学习笔记《三》-----“包含字符串的三种新方法”
- 完整的图片去噪代码(python)
- Go1.5正式版程序性能分析小积累,实验环境windows64
- 一步一步实现iOS应用PUSH功能
- Cocos2d-x3.1中使用万普平台实现Android平台广告添加
- hdu5419 Victor and Toys 期望,差分前缀和
- 提高开发效率
- mysql数据库主从复制配置
- Spring Boot 快速入门
- C++程序的编译和运行
- Linux多线程编程小结——干货
- Cocos2d-x 游戏中嵌入广告(mogo横幅)
- Linux-gdb调试
- 编写高质量代码(2)