关注
楼上大佬单调栈解法太强了
能不能帮忙看看我的代码是否可行,应该是O(nlogn)的复杂度。
dp[i]表示 以i为结尾的子序列的最大值的和
const int maxn = 1e5+7;
typedef long long ll;
int pos[maxn];
int val[maxn*10];
ll dp[maxn*10];
int max_pos(int s, int e)
{
if(s > e) return -1;
if(s == e) return pos[s];
int mid = s + (e-s)/2;
int l = max_pos(s,mid);
int r = max_pos(mid+1,e);
return l > r ? l : r;
}
int main()
{
int n;
while(~scanf("%d",&n)) {
int mx = -1;
for(int i = 0;i < n;i ++) {
scanf("%d",val+i);
mx = max(mx,val[i]);
}
double sum = 0;
memset(pos,-1,sizeof(pos));
for(int i = 0;i < n;i ++) {
int p = max_pos(val[i]+1,mx);
pos[val[i]] = i;
if(p == -1) dp[i] = val[i] * 1LL * (i-p);
else dp[i] = dp[p] + val[i] * 1LL * (i-p);
sum += dp[i];
}
sum = 2*sum / ((n+1) * n);
printf("%.6lf\n",sum);
}
return 0;
}
查看原帖
点赞 评论
相关推荐
07-10 13:50
门头沟学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 大厂面试初体验 #
5357次浏览 42人参与
# 如果可以,你希望哪个公司来捞你 #
100870次浏览 457人参与
# 如何提高实习转正率? #
2277次浏览 30人参与
# leader认为你工作不认真怎么办 #
30872次浏览 140人参与
# 你遇到过哪些神仙同事 #
100332次浏览 724人参与
# 我的国央企投递进展 #
46665次浏览 292人参与
# 国企是理工四大天坑的最好选择吗 #
13702次浏览 95人参与
# 五一之后,实习真的很难找吗? #
78521次浏览 515人参与
# 机械人,你被简历秒挂的企业有哪些? #
43010次浏览 281人参与
# 招聘要求与实际实习内容不符怎么办 #
113005次浏览 770人参与
# 如果公司给你放一天假,你会怎么度过? #
17107次浏览 128人参与
# 找工作时的取与舍 #
80466次浏览 568人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
246317次浏览 1792人参与
# 三一重工求职进展汇总 #
15068次浏览 67人参与
# OPPO求职进展汇总 #
662889次浏览 5041人参与
# 你的秋招第一场笔试是哪家 #
142780次浏览 1453人参与
# 总结:哪家公司面试体验感最差 #
61093次浏览 276人参与
# 如果重来一次你还会读研吗 #
176922次浏览 1786人参与
# 机械人,说说你的烦心事 #
69713次浏览 839人参与
# 面试时被问的最奇葩的问题 #
22995次浏览 130人参与