济南学习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们 ...
随机推荐
- Git 常用命令整理
初始化配置 #配置使用git仓库的人员姓名 git config --global user.name "Your Name Comes Here" #配置使用git仓库的人员em ...
- TMS320C54x系列DSP指令和编程指南——第2章 通目标文件格式介绍
第2章 通用目标文件格式介绍 汇编器和连接器可以产生在TMS320C54x器件上执行的目标文件,这些目标文件的格式称为通用目标文件格式(COFF).采用COFF格式有利于程序的模式化编程,因为它支持用 ...
- webpack +vue开发(1)
首先安装 node.js这是毋庸置疑的,安装完了之后安装webpack npm install webpack -g 接下来创建一个自己的文件夹 webpack-learn在里面创建一个index.h ...
- Hibernate工作原理
现在我们知道了一个概念Hibernate Session,只有处于Session管理下的POJO才具有持久化操作能力.当应用程序对于处于Session管理下的POJO实例执行操作时,Hibernate ...
- Spring @Service生成bean名称的规则
今天碰到一个问题,写了一个@Service的bean,类名大致为:BKYInfoServcie.java dubbo export服务的配置: <dubbo:service interface= ...
- Win32编程:窗口类样式+窗口外观样式+窗口显示样式
1.窗口类样式WNDCLASS.style CS_VREDRAW 提供窗口位置变化事件和高度变化事件的处理程序,功能是重绘窗口 CS_HREDRAW 提供窗口位置变化事件和宽度变化事件的处理程序,功能 ...
- ubuntu14.04网络设置
修改ip: /etc/network/interfaces
- python 向上取整ceil 向下取整floor 四舍五入round
#encoding:utf-8 import math #向上取整 http://www.manongjc.com/article/1335.html print "math.ceil--- ...
- JS-改变页面的颜色(一)
需求:点击页面的按钮,改变页面的颜色 思路:一先画出最简单的页面,二想办法获取页面的body节点,三想办法修改body节点的背景颜色属性,四通过一个方法获取随机的颜色值 简单的代码片段如下所示: &l ...
- MBW内存测试
在测试前,理应了解本机所具备的特点,比如CPU频率.内存频率.内存大小,等等信息. 查看CPU用如下命令(多少个核,频率,特性等): cat /proc/cpuinfo 查看内存用如下命令:(只有当前 ...