【问题描述】

有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[L,R]中则你比较厉害。求你比较厉害的概率。

【输入格式】

第一行有三个数N, l, r,含义如上描述。

接下来一行有N个数代表每一个数的值。

【输出格式】

输出一行一个分数a/b代表答案,其中a, b互质。 如果答案为整数则直接输出该

整数即可。

【样例输入 1】

4 2 3

3 1 2 4

【样例输出 1】

7/10

【样例输入 2】

4 1 4

3 1 2 4

【样例输出 2】

1

【样例解释】

塔外面有棵树。

【数据规模与约定】

对于30%的数据, 1 ≤ N ≤ 104。

对于60%的数据, 1 ≤ N ≤ 105。

对于100%的数据, 1 ≤ N ≤ 5 × 105, 0 < l ≤ r ≤ 100。

/*
要求区间平均值∈[L,R]的区间个数
现在我们来求区间平均值在1~r的个数和1~l(不包括l)的个数 前减后即为所求
以求1~r为例(用[L,R]-[1,L))
(a[i]+a[i+1]+......+a[i+k-1])/k<=r
[(a[i]+a[i+1]+......+a[i+k-1])+kr]/k<=0
[(a[i]-r)+(a[i+1]-r)+......+(a[i+k-1]-r)]/k<=0 (k>0)
so (a[i]-r)+(a[i+1]-r)+......+(a[i+k-1]-r)<=0
令s[i]=∑(a[i]-r)
即求s数组区间和<=0的个数
s[i+k-1]-s[i]<=0
s[i+k-1]<=s[i]
i<i+k-1
s[i]>=s[i+k-1]
即求s数组逆序对数.
答案为(ansr-ansl)/(n*(n+1)/2).
法二:要求[L,R]的合法答案只需求出不合法答案算补集.
合法的是>=l的正序对个数和<=r的逆序对个数.
so 只需求>=l的逆序对个数和<=r的正序对个数不合法即可(两者必定无交集).
(求正序对只需翻转数组即可orz.)
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 500001
#define LL long long
using namespace std;
LL n,l,r,ansl,ansr,tot,a[MAXN],b[MAXN],b1[MAXN],tot1;
struct data{LL x,o;}s[MAXN],c[MAXN];
LL read()
{
LL x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
return x*f;
}
bool cmp(const data &x,const data &y)
{
return x.x<y.x;
}
void add(LL x)
{
while(x<=n)
a[x]++,x+=x&-x;
return ;
}
LL query(LL x)
{
LL sum=0;
while(x>0) sum+=a[x],x-=x&-x;
return sum;
}
int main()
{
freopen("jian.in","r",stdin);
freopen("jian.out","w",stdout);
LL x;
n=read(),l=read(),r=read();
for(LL i=1;i<=n;i++) x=read(),c[i].o=s[i].o=i,
c[i].x=c[i-1].x+x-l,s[i].x=s[i-1].x+x-r;
sort(c+1,c+n+1,cmp),sort(s+1,s+n+1,cmp);
b[c[1].o]=1,b1[s[1].o]=1;
if(c[1].x<0) ansl++;
if(s[1].x<=0) ansr++;
for(LL i=2;i<=n;i++)
{
if(c[i].x==c[i-1].x) b[c[i].o]=b[c[i-1].o];
else b[c[i].o]=b[c[i-1].o]+1;
if(s[i].x==s[i-1].x) b1[s[i].o]=b1[s[i-1].o];
else b1[s[i].o]=b1[s[i-1].o]+1;
if(c[i].x<0) ansl++;
if(s[i].x<=0) ansr++;
}
for(LL i=n;i>=1;i--) ansl+=query(b[i]),add(b[i]+1);
memset(a,0,sizeof a);
for(LL i=n;i>=1;i--) ansr+=query(b1[i]),add(b1[i]);
LL ans=ansr-ansl,total=n*(n+1)/2;
LL xx=__gcd(ans,total);
ans/=xx,total/=xx;
if(total==1) cout<<ans;
else cout<<ans<<'/'<<total;
return 0;
}

Qbxt 模拟题 day2(am) T2 jian的更多相关文章

  1. 全国信息学奥林匹克联赛(NOIP2014)复赛 模拟题Day2 长乐一中

    题目名称 改造二叉树 数字对 交换 英文名称 binary pair swap 输入文件名 binary.in pair.in swap.in 输出文件名 binary.out pair.out sw ...

  2. 2019.10.1 qbxt模拟题

    第一题 考虑树上\(DP\),f[i][j][0/1]表示以\(i\)为根的子树,入读为零点的个数为\(j\),点\(i\)的入度为\(0\)/不为\(0\)时的方案数 转移的时候考虑\(u\)的一个 ...

  3. Qbxt 模拟题 day3(am) T3 选数字 (select)(贪心)

    选数字 (select Time Limit:3000ms Memory Limit:64MB 题目描述 LYK 找到了一个 n*m 的矩阵,这个矩阵上都填有一些数字,对于第 i 行第 j 列的位置上 ...

  4. CSP复赛day2模拟题

    没错,我又爆零了.....先让我自闭一分钟.....so 当你忘记努力的时候,现实会用一记响亮的耳光告诉你东西南北在哪. 好了,现在重归正题: 全国信息学奥林匹克联赛(NOIP2014) 复赛模拟题 ...

  5. QBXT模拟赛2

    总结 期望得分:\(100 + 40 + 0 = 140\) 实际得分:\(0 + 0 + 0 = 0\) 鬼知道为什么我代码没有交上..自测\(10 + 50 + 0\)--这是心态爆炸的一场考试 ...

  6. QBXT模拟赛1

    总结 期望得分:\(100 + 80 + 10 = 190\) 实际得分:\(90 + 80 + 10 = 180\) 这是在清北的第一场考试,也是在清北考的最高的一次了吧..本来以为能拿\(190\ ...

  7. 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中

    题目名称 正确答案  序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...

  8. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  9. NOIP模拟题汇总(加厚版)

    \(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...

随机推荐

  1. 运用加密技术保护Java源代码(转)

    出处:运用加密技术保护Java源代码 为什么要加密? 对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以.遗憾的是,Java程序的源代码很容易被别人偷看.只要有一 ...

  2. C# 操作地址 从内存中读取写入数据(初级)

    本示例以植物大战僵尸为例, 实现功能为 每1秒让阳光刷新为 9999.本示例使用的游戏版本为 [植物大战僵尸2010年度版], 使用的辅助查看内存地址的工具是  CE. 由于每次启动游戏, 游戏中阳光 ...

  3. gcc/g++ 以及makefile

    生成可执行文件   g++ mutiprocess.cpp -o test -fpic:产生位置无关码,位置无关码就是可以在进程的任意内存位置执行的目标码,动态链接库必须使用 -c : 只生成 .o ...

  4. React+Redux+Dva学习

    Redux提供一些api来管理数据,并且只能通过它提供的方式来修改.Redux包括三个部分:store, action,reducer. store:是一个规范的state,就像一个有条理的数据库,R ...

  5. mac下JDK的安装路径

    苹果系统已经包含完整的J2SE,其中就有JDK和JVM(苹果叫VM).当然如果要升级JDK,那当然要自己下载安装了. 在MAC系统中,jdk的安装路径与windows不同,默认目录是:/System/ ...

  6. hadoop-2.7.3安装kafka_2.11-2.1.0

    软件下载: http://mirrors.shu.edu.cn/apache/kafka/2.1.0/kafka_2.11-2.1.0.tgz 把下载好的包kafka_2.11-2.1.0.tgz 上 ...

  7. web端文件上传,预览,下载,删除

      //HTML部分 <div class="item attachment attachmentNew"> <span class="name&quo ...

  8. datePicker 及 timePicker 监听事件 获取用户选择 年月日分秒信息

    public class MainActivity extends AppCompatActivity { private TimePicker timePicker; private DatePic ...

  9. [ZOJ 3610] Yet Another Story of Rock-paper-scissors

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4713 题目很水,但是注意,越是简单的题目越应该关注细节,比如说输出上 ...

  10. 牛客小白月赛12 D 月月给华华出题 (欧拉函数,数论,线筛)

    链接:https://ac.nowcoder.com/acm/contest/392/D 来源:牛客网 月月给华华出题 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K, ...