题目

翻译:

给出一个n个数字的数列a[1],...,a[n],f(l,r)表示使a[l],a[l+1],...,a[r]组成的新序列中的重复元素只保留一个后,剩下元素的数量(如果l>r,则在计算前先交换l和r)。从1-n中分别选出两个数字l和r(两个数字选时各自独立,每个数字选出1-n的概率相等),求f(l,r)的数学期望。

就是$\dfrac {\sum _{l\leq n}^{l=1}\sum _{r\leq n}^{r=1}f\left( l,r\right) } {n^{2}}$

插入数学公式

然后,我参照这道题的做法写了一个O(log(n)*n^2)

 #include<cstdio>
typedef long long LL;
LL c[];
LL n,ans;
LL a[];
LL next1[];
LL boo[];
LL lowbit(LL x)
{
return x&-x;
}
void add(LL num,LL x)
{
while(num<=n)
{
c[num]+=x;
num+=lowbit(num);
}
}
LL sum1(LL x)
{
LL ans=;
while(x>)
{
ans+=c[x];
x-=lowbit(x);
}
return ans;
}
LL sum(LL l,LL r)
{
return sum1(r)-sum1(l-);
}
int main()
{
LL i,j;
scanf("%lld",&n);
for(i=;i<=n;i++)
scanf("%lld",&a[i]);
for(i=n;i>=;i--)
next1[i]=boo[a[i]],boo[a[i]]=i;
//boo[i]记录数字i第一次出现位置,next1[i]记录第i个数字下一次出现位置
for(i=;i<=n;i++)
if(boo[a[i]]==i)
add(i,);
for(i=;i<=n;i++)
{
for(j=i+;j<=n;j++)
ans+=sum(i,j);
if(next1[i]!=)
add(next1[i],);
}
ans*=;
ans+=n;
printf("%lf",(double)ans/(double)n/(double)n);
return ;
}

然后,就tle了。。。

经过大佬的指点后,我打开了新世界的大门找到了新的方法

例如:1 2 2 2 3
第1个2对1-2,1-3,1-4,1-5,2-2,2-3,2-4,2-5的不相同值的数量有贡献
第2个2对3-3,3-4,3-5的不相同值的数量有贡献
第3个2对4-4,4-5的不相同的值的数量有贡献
由于每一组a-b,b-a(a<b)只计算了其中的一个(a-b),所以要乘2。
由于乘2后所有a-a计算2遍,所以要减去n。

 #include<cstdio>
typedef long long LL;
//bool exist[1001000];
int last[];
LL ans,n;
int main()
{
LL i,t;
scanf("%lld",&n);
for(i=;i<=n;i++)
{
scanf("%lld",&t);
ans+=(i-last[t])*(n-i+);
last[t]=i;
//(last[t]+1)-i,..,(last[t]+1)-n,.....,i-i,..,i-n
//last[t]+1:n-i+1;...i:n-i+1
// if(exist[t])
// ans+=n-i+1;
// else
// {
// exist[t]=true;
// //ans+=i*(n-i+1);
// //n+(n-1)+...+(n-i+1)
// ans+=(2*n-i+1)*i/2;
// }
//错误,无法处理如2 2 4 2的数据
}
printf("%lf",(double)(ans*-n)/(double)n/(double)n);
return ;
}

Random Query CodeForces - 846F的更多相关文章

  1. Codeforces 846F - Random Query

    原题链接:http://codeforces.com/contest/846/problem/F 题意:给一个数列,任意取区间[l, r],问区间内不同数字的个数的期望是多少. 思路: 对于第i个数a ...

  2. CodeForces - 846F Random Query(期望)

    You are given an array a consisting of n positive integers. You pick two integer numbers l and r fro ...

  3. Subtree Minimum Query CodeForces - 893F (线段树合并+线段树动态开点)

    题目链接:https://cn.vjudge.net/problem/CodeForces-893F 题目大意:给你n个点,每一个点有权值,然后这n个点会构成一棵树,边权为1.然后有q次询问,每一次询 ...

  4. B. Random Teams(Codeforces Round 273)

    B. Random Teams time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  5. 【Educational Codeforces Round28】

    咸鱼选手发现自己很久不做cf了,晚节不保. A.Curriculum Vitae 枚举一下间断点的位置. #include<bits/stdc++.h> using namespace s ...

  6. python爬取微信公众号

    爬取策略 1.需要安装python selenium模块包,通过selenium中的webdriver驱动浏览器获取Cookie的方法.来达到登录的效果 pip3 install selenium c ...

  7. iOS SwiftMonkey 随机暴力测试

    参考源文章 https://github.com/zalando/SwiftMonkey https://kemchenj.github.io/2017/03/16/2017-03-16/ 简介 这个 ...

  8. 如何使用jMeter对某个OData服务进行高并发性能测试

    For project reason I have to measure the performance of OData service being accessed parallelly. And ...

  9. MySQL将语句写入到binlog二进制日志中

    由于二进制日志是公共资源,所有线程都要写二进制日志,所以一定要避免两个线程同时更新二进制日志.因此,在事件组写二进制日志时,二进制日志将获得一个互斥锁LOCK_log,然后在事件组写完后释放,由于服务 ...

随机推荐

  1. centos7+php7 swoole 安装

    下载 swoole 首先下载swoole的源码包,这个操作很简单,没有太多说的. wget -c https://github.com/swoole/swoole-src/archive/v2.0.6 ...

  2. Mono 和 .NET Core比翼双飞

    大家好,今天给大家分享.NET 蓝图之下的Mono和.NET Core 话题,微软在Build 2019 大会上给.NET 做了一个五年规划,所以分享的主题就是<Mono和.NET Core 比 ...

  3. appium server参数

    转自: http://m.blog.csdn.net/blog/kittyboy0001/40893979 appium Appium是一个开源的,适用于原生或混合移动应用应用( hybrid mob ...

  4. adb问题整理

    1.开启了两个adb,关掉一个,重启eclipse既可 java.io.IOException: 您的主机中的软件中止了一个已建立的连接. at sun.nio.ch.SocketDispatcher ...

  5. STL review:vector & string & map & struct

    I.vector 1.头文件:#include<vector>                        //容器vector是一个能实现随机存取.插入删除的动态数组,还可以当栈使. ...

  6. 利用BADI WORKORDER_INFOSYSTEM在COOIS中加入自己定义列办事处

    需求描写叙述:依据LC业务部门提出的需求.须要在COOIS中加入办事处一列. 1.在IOHEADER_TAB的CI_IOHEADER中加入字段办事处.如以下图所看到的:   watermark/2/t ...

  7. CentOS笔记-磁盘管理

    Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分区 df [-ahikHTm] [目录或文件名] -a : ...

  8. Release Candidate

    RC_百度百科 https://baike.baidu.com/item/RC/7311964?fr=aladdin RC=Release Candidate,含义是"发布候选版" ...

  9. Scaling with Microservices and Vertical Decomposition

    Scaling with Microservices and Vertical Decomposition – dev.otto.de https://dev.otto.de/2014/07/29/s ...

  10. Does Hadoop require SSH?

    https://wiki.apache.org/hadoop/FAQ#Does_Hadoop_require_SSH.3F Hadoop provided scripts (e.g., start-m ...