题意:

给定一个数组a,现在存在一个数组b,其元素值在[0,1]随机生成

若对于a,b,任意rmq问题的最值出现在同一个数组中的位置,则数组b的价值为∑b[i],否则为0,求数组b的期望价值

n<=1e6

思路:

 #include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<vector>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef vector<int> VI;
#define fi first
#define se second
#define MP make_pair int read()
{
int v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} const ll MOD=1e9+;
const int N=; int f[N][],a[N],lg[N],cas,n;
ll ans;
ll inv[N]; int query(int l,int r)
{
int len=r-l+;
int q=lg[len];
if (a[f[l][q]]>=a[f[r-(<<q)+][q]]) return f[l][q];
else return f[r-(<<q)+][q];
} void solve(int l,int r)
{
ans=ans*inv[r-l+]%MOD;
int mid=query(l,r);
if(l<mid) solve(l,mid-);
if(mid<r) solve(mid+,r);
} int main()
{
freopen("1008.in","r",stdin);
freopen("1008.out","w",stdout);
cas=read();
for(int i=;i<=;i++) lg[i]=lg[i>>]+;
inv[]=inv[]=;
for(int i=;i<=;i++) inv[i]=inv[MOD%i]*(MOD-MOD/i)%MOD;
while(cas--)
{
n=read();
for(int i=;i<=n;i++)
{
a[i]=read();
f[i][]=i;
}
for(int i=;i<=;i++)
for(int j=;j<=n-(<<i)+;j++)
if(a[f[j][i-]]>=a[f[j+(<<(i-))][i-]]) f[j][i]=f[j][i-];
else f[j][i]=f[j+(<<(i-))][i-];
ans=;
solve(,n);
ans=ans*inv[]%MOD*n%MOD;
printf("%lld\n",ans);
}
return ;
}

最新文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (10) -----第二章 实体数据建模基础之两实体间Is-a和Has-a关系建模、嵌入值映射
  2. 树上倍增求LCA(最近公共祖先)
  3. --hdu 1231 最大连续子序列(动态规划)
  4. 蓝牙的AVDTP协议笔记
  5. 关于智能指针boost::shared_ptr
  6. 代理和 block 传值的使用
  7. maven更新总结与tomcat发布方法总结
  8. 51nod动态规划-----矩阵取数
  9. POJ 3525 Most Distant Point from the Sea
  10. react-native学习笔记——简单尝试
  11. json 的 使用方法以及与数组的区别
  12. simplePagination API
  13. 哈密顿圈~Lingo程序
  14. 关于jquery中封装函数如何传递当前元素的问题
  15. 数据库【mongodb】之pymongo
  16. [模板] 多项式: 乘法/求逆/分治fft/微积分/ln/exp/幂
  17. 两个select之间的元素互相移动并保持顺序
  18. java位运算(&amp;、|、 ~、&gt;&gt;、&gt;&gt;&gt; 、 ^)
  19. 买了第一台mac
  20. ThirdAPI

热门文章

  1. 通用mapper的generator
  2. canvas基础绘制-绚丽倒计时
  3. JavaScript创建对象的七种方法
  4. 一个Java编写的小玩意儿--脚本语言解释器(一)
  5. 备忘录:python 3在class中使用yield
  6. Android系统固件定制方式
  7. uva11491 Erasing and Winning
  8. sklearn之SVC
  9. 拖拽功能-jquery
  10. 5.1 qbxt 一测 T3