济南学习D2T2__数学分析题
【问题描述】
有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≤ 10 5 。
对于100%的数据,1 ≤ N≤ 5× 10 5 ,0 < L ≤ R ≤ 100。
______________________________________________________________________
很神奇的数学题,难在推公式,并把公式和信息学的东西联系起来。这是信息题吗?算是数学信息题吧!!!
推理过程:
1、求区间平均值在【l,r】间的概率
2、求平均值在[l,r]间的个数,在除以n(n+1)就可以了
3、[l,r]间的个数=小于等于r的个数-小于l的个数
4、小于l可以表示为(a[i]+a[i+1]+a[i+2]+……+a[i+k-1])/k<l
继续推出(a[i]+a[i+1]+a[i+2]+……+a[i+k-1])<l*k
再推出(a[i]+a[i+1]+a[i+2]+……+a[i+k-1])-l*k<0
再再推出(a[i]-l+a[i+1]-l+a[i+2]-l+……+a[i+k-1]-l)<0
让数组b[i]=a[i]-l;
公式变为b[i]+b[i+1]+b[i+2]+……+b[i+k-1]<0
用前缀和维护可得:s[i+k-1]-s[i-1]<0;
这是什么?逆序对!!!逆序对的个数就是小于l的个数
同理求出小于等于r的个数。差,OK!
神啊!再让我做一遍,我还是做不出来!!!
______________________________________________________________________
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm> using namespace std;
long long n,l,r,ans1,ans2;
long long a[],b[],c[],d[];
void readlong(long long &x)
{
char c=getchar();
int fh=;
for(;c>''||c<'';c=getchar())if(c=='-')fh*=-;
x=;
for(;c<=''&&c>='';c=getchar())x=x*+c-'';
x=x*fh;
} void nxd1(long long l,long long r)
{
if(l==r)return;
long long mid=(l+r)/;
nxd1(l,mid);nxd1(mid+,r);
long long z=l,y=mid+,x=l;
while(z<=mid&&y<=r)
{
if(b[z]>b[y])
{
ans1+=mid-z+;
d[x++]=b[y];y++;
}
else
{
d[x++]=b[z];z++;
}
}
while(z<=mid)
{
d[x++]=b[z];z++;
}
while(y<=r)
{
d[x++]=b[y];y++;
}
memcpy(b+l,d+l,(r-l+)*);
}
void nxd2(long long l,long long r)
{
if(l==r)return;
long long mid=(l+r)/;
nxd2(l,mid);nxd2(mid+,r);
long long z=l,y=mid+,x=l;
while(z<=mid&&y<=r)
{
if(c[z]>=c[y])
{
ans2+=mid-z+;
d[x++]=c[y];y++;
}
else
{
d[x++]=c[z];z++;
}
}
while(z<=mid)
{
d[x++]=c[z];z++;
}
while(y<=r)
{
d[x++]=c[y];y++;
}
memcpy(c+l,d+l,(r-l+)*);
}
int main()
{
freopen("jian.in","r",stdin);
freopen("jian.out","w",stdout);
readlong(n);readlong(l);readlong(r);
for(long long i=;i<=n;i++)
{
readlong(a[i]);
b[i]=b[i-]+a[i]-l;
c[i]=c[i-]+a[i]-r;
}
ans1=;nxd1(,n);
ans2=;nxd2(,n);
ans2-=ans1;
ans1=n*(n+)/;
if(ans2==)
{
cout<<""<<endl;return ;
}
if(ans2==ans1)
{
cout<<""<<endl;return ;
}
long long g=__gcd(ans1,ans2);
cout<<ans2/g<<"/"<<ans1/g<<endl;
fclose(stdin);
fclose(stdout);
return ;
}
济南学习D2T2__数学分析题的更多相关文章
- 《Data Structures and Algorithm Analysis in C》学习与刷题笔记
<Data Structures and Algorithm Analysis in C>学习与刷题笔记 为什么要学习DSAAC? 某个月黑风高的夜晚,下班的我走在黯淡无光.冷清无人的冲之 ...
- C语言编程学习打造——做题游戏
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- 济南学习D3T1__线性筛和阶乘质因数分解
[问题描述] 从1− N中找一些数乘起来使得答案是一个完全平方数,求这个完全平方数最大可能是多少. [输入格式] 第一行一个数字N. [输出格式] 一行,一个整数代表答案对100000007取模之后的 ...
- 济南学习D2T1__折纸带
他[问题描述]一张长度为n的纸带,我们可以从左至右编号为0 −n(纸带最左端标号为0) .现在有m次操作,每次将纸带沿着某个位置进行折叠,问所有操作之后纸带的长度是多少.[输入格式]第一行两个数字n, ...
- 济南学习 Day 3 T2 am
看程序写结果(program)Time Limit:1000ms Memory Limit:64MB题目描述LYK 最近在准备 NOIP2017 的初赛,它最不擅长的就是看程序写结果了,因此它拼命地在 ...
- $2018/8/19 = Day5$学习笔记 + 杂题整理
\(\mathcal{Morning}\) \(Task \ \ 1\) 容斥原理 大概这玩意儿就是来用交集大小求并集大小或者用并集大小求交集大小的\(2333\)? 那窝萌思考已知\(A_1,A_2 ...
- python模块学习第 0000 题
将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果: 好可爱>%<! 题目来源:https://github.com/Yixiao ...
- NLP传统基础(2)---LDA主题模型---学习文档主题的概率分布(文本分类/聚类)
一.简介 https://cloud.tencent.com/developer/article/1058777 1.LDA是一种主题模型 作用:可以将每篇文档的主题以概率分布的形式给出[给定一篇文档 ...
- 【笔记篇】不普及向——莫比乌斯反演学习笔记 && 栗题HAOI2011 Problem B
Part0 广告(当然没有广告费) P.S. 这篇文章是边学着边用Typora写的...学完了题A了blog也就呼之欲出了~有latex化式子也非常方便...非常建议喜欢Markdown的dalao们 ...
随机推荐
- asp.net 设置页面的默认按钮(敲回车按钮所触发的默认按钮)
来源:http://blog.csdn.net/zanychou/article/details/6128872 设置一个页面的默认按钮主要代码: this.Page.Form.DefaultButt ...
- RESTful API的重磅好伙伴Swagger2
本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档. 它既可以减少我们创建文 ...
- 【uTenux实验】写在开始实验之前
1.使用的uTenux内核代码:http://www.uloong.cc/cn/download/uTenux_V1.6.00r180.zip 2.uTenux的特性: 1.微内核 2.开放源码.完 ...
- webpack +vue开发(2)
我们的loader方式其实可以写成inline的方式 loaders:[ { test:/\.js$/, loader:"babel", exclude:/node_modules ...
- Win32API界面库 - Project wheels 工程基础部分完成
离上次发博文过去了好久,先是要忙一个机器人的项目,然后就是部门的事情和考试周复习,然后就到了考试周,趁着复习的间隙,拾起了寒假时候抄的界面库,修掉了从前的bug. bug1 控件显示问题 当初抄这个库 ...
- metaspace之三--Metaspace解密
概述 metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所致,看到 ...
- Python中super函数的用法
之前看python文档的时候发现许多单继承类也用了super()来申明父类,那么这样做有何意义? 从python官网文档对于super的介绍来看,其作用为返回一个代理对象作为代表调用父类或亲类方法.( ...
- [ActionScript 3.0] NetConnection建立客户端与服务器的双向连接
一个客户端与服务器之间的接口测试的工具 <?xml version="1.0" encoding="utf-8"?> <!--- - - - ...
- AX Dynamic 2012 tabletype:TempDB使用
LedgerJournalTmp ledgerJournalTmpJoin; LedgerJournalTransAccrual this.takeOwnershipOfTempTable(ledge ...
- Spark Streaming、HDFS结合Spark JDBC External DataSouces处理案例
场景:使用Spark Streaming接收HDFS上的文件数据与关系型数据库中的表进行相关的查询操作: 使用技术:Spark Streaming + Spark JDBC External Data ...