济南学习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们 ...
随机推荐
- 【ZJOI2004】嗅探器
练tarjian不错的题,连WA几次后终于会记住tarjian的模板了 原题: 某军搞信息对抗实战演习.红军成功地侵入了蓝军的内部网络.蓝军共有两个信息中心.红军计划在某台中间服务器上安装一个嗅探器, ...
- 蓝牙协议栈中的 OSAL
蓝牙协议栈里的操作系统叫做 OSAL(操作系统抽象层).它并非一个真正意义上的操作系统,它只是实现了操作系统的一些功能,如任务切换.内存管理. OSAL 产生的根源:基于蓝牙协议栈开发的产品,实际上是 ...
- Android学习六:Socket 使用
1socket的作用 通过http去获取服务器的数据在有些情况下是行不通的,所有使用socket与服务器通信也是必须掌握的 2.代码 好了上代码,代码中有解释,首先是简单的服务端代码 package ...
- Python之paramiko基础
一.Paramiko模块 paramiko是一个自由和开放源码模块使用,实现SSH2协议安全(认证和加密)连接到远程计算机. 二.windwos下安装paramiko模块 #在DOS命令行执行如下命令 ...
- 简单的鼠标可拖动div 兼容IE/FF
来源:http://www.cnblogs.com/imwtr/p/4355416.html 作者: 主要思路: 一个div,注册监听onmousedown事件,然后处理获取的对象及其相关值(对象高度 ...
- Mac 下 Intellij IDEA 2016.1.2+maven+jetty+ JRebel 6.4.3 破解+spring mvc
准备阶段: Intellij IDEA 2016.1.2 (官方下载,作者下载的是社区版): JRebel for IntelliJ插件安装,可选择在线安装,在线安装的是最新版,我选择本地安装, 下 ...
- Spring学习 Ioc篇(一 )
一直以来忙于项目的开发,Spring虽然不用,一直想系统地学习一下,想看看它的源码,都没有时间,这段时间比较充裕,就索性先把Spring学习下,熟悉各个功能再去探究它内部的实现.就从Ioc篇开始学习. ...
- oracle远程连接太慢
场景:Oracle11G DB服务器上用sqlplus直接连很快(秒连),但加上服务名后却半天没反应.一台正式.一台测试都出现此问题. sqlplus:xnwz/xnwz 很快 sqlplus:xnw ...
- centos7下安装vsftpd与PAM虚拟用户
Vsftp与PAM虚拟用户 使用yum 安装vsftp yum install vsftpd pam pam-* db4 db4-* 设置开机启动 chkconfig vsftpd on 创建一个保存 ...
- MyEclipse转换Eclipse项目无法启动问题(转)
将myeclipse中开发的动态web项目直接引入到eclipse中继续开发,启动tomcat时会发出警告,更重的问题是你想启动的项目不知哪里去了,没有读取到配置文件: 警告: [SetP ...