关注
楼上大佬单调栈解法太强了
能不能帮忙看看我的代码是否可行,应该是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;
}
查看原帖
点赞 评论
相关推荐
12-21 15:20
重庆邮电大学 Java 点赞 评论 收藏
分享
12-02 11:57
南京艺术学院 设计 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
164699次浏览 2785人参与
# 你面试体验感最差/最好的公司 #
11887次浏览 193人参与
# 一人说一个提前实习的好处 #
7101次浏览 133人参与
# 重来一次,你会对开始求职的自己说 #
4914次浏览 123人参与
# 秋招落幕,你是He or Be #
7270次浏览 157人参与
# 找工作,行业重要还是岗位重要? #
84690次浏览 1674人参与
# 实习没事做是福还是祸? #
11739次浏览 191人参与
# 今年你最想重开的一场面试是? #
2419次浏览 35人参与
# 团建是“福利”还是是 “渡劫” #
5854次浏览 133人参与
# 你小心翼翼的闯过多大的祸? #
9667次浏览 140人参与
# 比亚迪工作体验 #
73153次浏览 277人参与
# 工作中听到最受打击的一句话 #
4290次浏览 83人参与
# 机械人避雷的岗位/公司 #
38570次浏览 261人参与
# 大厂VS公务员你怎么选 #
73251次浏览 670人参与
# 长城汽车工作体验 #
12824次浏览 16人参与
# 如何排解工作中的焦虑 #
246741次浏览 2272人参与
# 机械制造面试点评 #
80736次浏览 465人参与
# 秋招结束之后的日子 #
114104次浏览 1051人参与
# 应届生进小公司有什么影响吗 #
109722次浏览 1123人参与
# 总结:哪家公司面试体验感最差 #
83161次浏览 388人参与
