HDOJ 5419 Victor and Toys 树状数组
来源:互联网 发布:zepto.js 倒计时特效 编辑:程序博客网 时间:2024/05/06 02:59
分母是一定的C(m,3) 树状数组求每个数可以在那些段中出现,若x出现在了s段中,分子加上w[x]*C(s,3)
Victor and Toys
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others)Total Submission(s): 331 Accepted Submission(s): 118
Problem Description
Victor has n toys, numbered from 1 to n . The beauty of the i -th toy is wi .
Victor has a sense of math and he generatesm intervals, the i -th interval is [li,ri] . He randomly picks 3 numbers i,j,k(1≤i<j<k≤m) , and selects all of the toys whose number are no less than max(li,lj,lk) and no larger than min(ri,rj,rk) . Now he wants to know the expected sum of beauty of the selected toys, can you help him?
Victor has a sense of math and he generates
Input
The first line of the input contains an integer T , denoting the number of test cases.
In every test case, there are two integersn and m in the first line, denoting the number of the toys and intervals.
The second line containsn integers, the i -th integer wi denotes that the beauty of the i -th toy.
Then there arem lines, the i -th line contains two integers li and ri .
1≤T≤10 .
1≤n,m≤50000 .
1≤wi≤5 .
1≤li≤ri≤n .
In every test case, there are two integers
The second line contains
Then there are
Output
Your program should print T lines : the i -th of these denotes the answer of the i -th case.
If the answer is an integer, just print a single interger, otherwise print an irreducible fraction likep/q .
If the answer is an integer, just print a single interger, otherwise print an irreducible fraction like
Sample Input
13 41 1 52 31 33 31 1
Sample Output
5/4
Source
BestCoder Round #52 (div.2)
/* ***********************************************Author :CKbossCreated Time :2015年08月23日 星期日 14时23分47秒File Name :HDOJ5419.cpp************************************************ */#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <string>#include <cmath>#include <cstdlib>#include <vector>#include <queue>#include <set>#include <map>using namespace std;typedef unsigned long long int LL;const int maxn=50500;/****************BIT***********************/int n,m;int w[maxn];int l[maxn],r[maxn];inline int lowbit(int x) { return x&(-x); }int tree[maxn];void add(int p,int v){for(int i=p;i<maxn;i+=lowbit(i)) tree[i]+=v;}int sum(int p){int ret=0;for(int i=p;i;i-=lowbit(i)) ret+=tree[i];return ret;}LL getC(LL x){return x*(x-1)/2LL*(x-2)/3LL;}LL gcd(LL a,LL b){if(b==0) return a;return gcd(b,a%b);}int main(){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int T_T;scanf("%d",&T_T);while(T_T--){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d",w+i);memset(tree,0,sizeof(tree));for(int i=0;i<m;i++){scanf("%d%d",l+i,r+i);add(l[i],1); add(r[i]+1,-1);}if(m<3) { puts("0"); continue; }LL up=0,down=getC(m);for(int i=1;i<=n;i++){LL x=sum(i);if(x>=3){up=up+w[i]*getC(x);}}if(up==0) { puts("0"); continue; }LL g=gcd(up,down);if(g==down) cout<<up/g<<endl;else cout<<up/g<<"/"<<down/g<<endl;} return 0;}
0 0
- HDOJ 5419 Victor and Toys 树状数组
- 【HDOJ 5419】 Victor and Toys (排列组合)
- hdu 5419 Victor and Toys
- HDU 5419 Victor and Toys
- HDU 5419 Victor and Toys ()
- 【hdu5419】Victor and Toys
- BestCoder#52 Victor and Toys
- hdu 5419 Victor and Toys 线段树成段更新
- hdu 5419 Victor and Toys(暴力+组合)
- HDU5419Victor and Toys(树状数组+数学期望)
- hdu5419--Victor and Toys(枚举)
- hdu 5419 Victor and Toys(期望+差分前缀和)
- HDOJ 5417 Victor and Machine
- HDOJ 5418 Victor and World
- hdu5419 Victor and Toys 期望,差分前缀和
- 【HDOJ 5418】 Victor and World (状压dp)
- HDOJ 5417 Victor and Machine 水
- HDOJ 5418 Victor and World 状压DP
- 开机蓝屏代码及其处理方法
- iOS ImagePickerController 入门
- 关于smart svn for mac破解方式 以及 下载地址
- JQuery第四天总结
- 网站
- HDOJ 5419 Victor and Toys 树状数组
- 【javascript】Ajax核心-XMLhttpRequest
- 微信营销之《序言》
- JavaScript表单验证
- 八皇后问题
- swift详解之七------------你真的了解构造过程吗(构造过程和析构过程)
- Objective-C 【多态】
- android权限大全
- android LayoutInflater三种获取方式