zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 28 F. Random Query

    题意:一个数列,随机选l,r,f(l,r)为l,r区间内数的种数,问f(l,r)的期望

    思路:sum(每个数算出他的贡献)/(n*n),我们这只考虑l<=r ,对于当前这数字他能贡献后面的所有区间,但是对于前面的话,他只共贡献到前一个相同的数后面

               比如  1  2  3  4  2  5  6

               对于第一个2  他贡献于  (1,2) (1,3)(1,4)(1,5)(1,6)(1,7)

                  (2,2) (2,3)(2,4)(2,5)(2,6)(2,7)

       对于第2个2  贡献于     (3,5)(3,6)(3,7)     (4,5)(4,6)(4,7)     (5,5)(5,6)(5,7)

      注意:爆int

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 int a[1000005];
     5 
     6 int main(){
     7     int n;
     8     ll ans=0;
     9     cin>>n;
    10     for(int i=1;i<=n;i++){
    11         int x;
    12         scanf("%d",&x);
    13         ans+=1LL*(i-a[x])*(n-i+1);
    14        // cout<<(i-a[x])<<" "<<(n-i+1)<<" "<<ans<<endl;
    15         a[x]=i;
    16     }
    17     ans=ans*2-n;
    18     //cout<<ans<<endl;
    19     printf("%.5f
    ",ans*1.0/(1LL*n*n*1.0));
    20 }

       

  • 相关阅读:
    Linux配置防火墙 开启80端口
    微信支付调用JSAPI缺少参数:timeStamp
    php解压zip文件
    css JavaScript 笔记
    css
    html标签
    模拟服务器返回html
    网页特殊符号HTML代码大全
    selectors模块
    select
  • 原文地址:https://www.cnblogs.com/hhxj/p/7495124.html
Copyright © 2011-2022 走看看