hdu 6827 Road To The 3rd Building
题意:
t组输入,每一组一个n,然后后面是n个树的值(我们放到数组v里面),你需要从[1,n]这个区间内挑选出来两个数i,j,你需要保证i<=j,之后你要求一下v[i]+v[i+1]+...+v[j],然后把这个和除于j-i+1(也就是求平均值),最后答案要求的是这个平均值的期望,我们可以算出来有多少对(i,j),我们设有sum对,然后让每一个平均值乘于1/sum,把这个都加到一起就可以了
题解:
sum的求法就是n*(n-1)/2
然后

我们可以枚举区间大小,从1枚举到n,上图是区间长度为1
蓝线中间的是,区间长度为1的时候区间内的数,如果区间长度为2的时候,那么蓝线中间的就是
1234
2345
蓝线上下两侧的就是把它们都补全之后的模样,我们只需要用v的前缀和数组w,让w[n]乘于一个数然后减去上下两侧的就可以
总之就是找规律
代码:
#include<stack>
#include<queue>
#include<map>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define fi first
#define se second
using namespace std;
typedef long long ll;
const int maxn=2e5+10;
const int mod=1e9+7;
ll v[maxn],p[maxn],p2[maxn],p_pre[maxn],p_suf[maxn];
ll ksc(ll a, ll b)
{
ll ans = 0;
while( b > 0 )
{
if( b&1 ) ans = (ans + a) % mod;
a = ( a + a ) % mod;
b >>= 1;
}
return ans;
}
ll ppow(ll a,ll b)
{
ll ans=1;
while(b)
{
if(b&1) ans=(ans*a)%mod;
a=(a*a)%mod;
b>>=1;
}
return ans;
}
//void init()
//{
// ll ans = 0;
// for (ll i = 1; i <= 6000001; i++)
// {
// ll x = ((i * i) % mod);
// ans = (ans + (ppow(x, mod - 2) % mod));
// dp[i] = (ans * 3) % mod;
// }
//}
int main()
{ ll t;
scanf("%lld",&t);
while(t--)
{
memset(v,0,sizeof(v));
memset(p,0,sizeof(p));
memset(p2,0,sizeof(p2));
memset(p_pre,0,sizeof(p_pre));
memset(p_suf,0,sizeof(p_suf));
ll n,result=0,sum;
scanf("%lld",&n);
sum=(n*(n+1))/2;
sum%=mod;
for(ll i=1; i<=n; ++i)
{
scanf("%d",&v[i]);
p[i]=(p[i-1]+v[i])%mod;
}
p2[n]=v[n];
for(ll i=n-1; i>=1; --i)
{
p2[i]=(p2[i+1]+v[i])%mod; }
for(ll i=1; i<=n; ++i)
{
p_pre[i]=(p[i]+p_pre[i-1])%mod;
}
p_suf[n+1]=0;
p_suf[n]=p2[n];
for(ll i=n-1; i>=1; --i)
{
p_suf[i]=(p2[i]+p_suf[i+1])%mod;
}
for(ll i=1; i<=n; ++i)
{
result = (result + (((((i*p[n])%mod)-p_pre[i - 1]-p_suf[n-i+2]+mod) % mod) * ppow(i, mod - 2)%mod))%mod;
}
printf("%lld\n",((result%mod)*ppow(sum,mod-2))%mod);
}
return 0;
}
hdu 6827 Road To The 3rd Building的更多相关文章
- hdu 5861 Road 两棵线段树
传送门:hdu 5861 Road 题意: 水平线上n个村子间有 n-1 条路. 每条路开放一天的价格为 Wi 有 m 天的操作,每天需要用到村子 Ai~Bi 间的道路 每条路只能开放或关闭一次. ( ...
- HDU 5861 Road (线段树)
Road 题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5861 Description There are n villages alo ...
- HDU 5861 Road 线段树区间更新单点查询
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5861 Road Time Limit: 12000/6000 MS (Java/Othe ...
- HDU 5861 Road(线段树 区间修改 单点查询)
Road Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- HDU 5669 Road(线段树建树)(分层图最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5669 [分析]线段树建树+分层图最短路 #include <cstdio> #includ ...
- HDU 3917 Road constructions(最小割---最大权闭合)
题目地址:HDU 3917 这题简直神题意... 题目本身就非常难看懂不说..即使看懂了.也对这题意的逻辑感到无语...无论了.. 就依照那题意上说的做吧... 题意:给你n个城市,m个公司.若干条可 ...
- 2016 Multi-University Training Contest 10 [HDU 5861] Road (线段树:区间覆盖+单点最大小)
HDU 5861 题意 在n个村庄之间存在n-1段路,令某段路开放一天需要交纳wi的费用,但是每段路只能开放一次,一旦关闭将不再开放.现在给你接下来m天内的计划,在第i天,需要对村庄ai到村庄bi的道 ...
- HDU 5033 (单调栈维护凸包) Building
题意: 一个人在x轴上,他的左右两侧都有高楼,给出楼的横坐标Xi和高度Hi还有人的位置pos,求人所能看到的天空的最大角度. 分析: 将建筑物和人的位置从左到右排序,对于每个位置利用栈求一次人左边建筑 ...
- hdu 3917 Road constructions 最大权闭合子图
样例说明: n(城市数目) m(工程队数目) 每个工程队上交的税收 val[i] k(k个工程) xi yi ci costi , 工程队ci承包由xi到yi,政府的补贴为costi 注意 ...
随机推荐
- 【Flutter】容器类组件之Scaffold、TabBar、底部导航
前言 一个完整的路由页可能会包含导航栏.抽屉菜单(Drawer)以及底部Tab导航菜单等.Flutter Material组件库提供了一些现成的组件来减少开发任务.Scaffold是一个路由页的骨架, ...
- 【Java基础】异常处理
异常处理 异常概述 在 Java 语言中,将程序执行中发生的不正常情况称为"异常",但是开发过程中的语法错误和逻辑错误不是异常. 在执行过程中所发生的异常事件可分为两类: Erro ...
- 【JavaWeb】JSTL 标签库
JSTL 标签库 简介 JSTL(JSP Standard Tag Library),即 JSP 标准标签库.标签库是为了替换代码脚本,使得整个 jsp 页面变得更加简洁. JSTL 有五个功能不同的 ...
- 【Java集合】HashSet源码解析以及HashSet与HashMap的区别
HashSet 前言 HashSet是一个不可重复且元素无序的集合.内部使用HashMap实现. 我们可以从HashSet源码的类注释中获取到如下信息: 底层基于HashMap实现,所以迭代过程中不能 ...
- python模块详解 | pyquery
简介 pyquery是一个强大的 HTML 解析库,利用它,我们可以直接解析 DOM 节点的结构,并通过 DOM 节点的一些属性快速进行内容提取. 官方文档:http://pyquery.readth ...
- k8s之ServiceAccount
导读 上一篇说了k8s的RBAC授权模式,今天就来简单看一下其中涉及到的ServiceAccount. 简介 k8s创建两套独立的账号系统,原因如下: (1)User账号给用户用,Service Ac ...
- /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh: line 19: mysql: command not found
[root@test ~]# tail -f /tmp/zabbix_agentd.log /var/lib/zabbix/percona/scripts/get_mysql_stats_wrappe ...
- ctfhub技能树—RCE—命令注入
打开靶机 查看页面信息 输入127.0.0.1进行测试 构造payload 127.0.0.1&ls 查看文件内容信息 127.0.0.1 & cat 179852221619745. ...
- v-model语法糖
其实v-model就是一个结合了v-bind和v-on的语法糖,实现了双向数据绑定. 举个(栗子):
- 白日梦的Elasticsearch实战笔记,ES账号免费借用、32个查询案例、15个聚合案例、7个查询优化技巧。
目录 一.导读 二.福利:账号借用 三._search api 搜索api 3.1.什么是query string search? 3.2.什么是query dsl? 3.3.干货!32个查询案例! ...