关注
楼上大佬单调栈解法太强了
能不能帮忙看看我的代码是否可行,应该是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;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
2025-12-18 21:55
济宁学院 Java 程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
01-05 09:14
同济大学 Java 不要盒我呀:我要是9✌🏻我就选保研,保研了大四再找实习,实习之后,如果觉得自己不适合互联网工作模式,还能有其他选择,如果实习后决定了走互联网,也能提升学历提高竞争力
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的付费上班经历 #
1258次浏览 32人参与
# 如果不上班,你会去做什么 #
756次浏览 26人参与
# MiniMax求职进展汇总 #
1107次浏览 23人参与
# 参加哪些竞赛对找工作有帮助? #
943次浏览 19人参与
# 工作压力大,你会干什么? #
633次浏览 21人参与
# 简历第一个项目做什么 #
518次浏览 15人参与
# 职场新人体验 #
159762次浏览 1133人参与
# 生物制药/化工校招攻略 #
72905次浏览 338人参与
# 拿到offer之后,可以做些什么 #
84132次浏览 437人参与
# 你觉得面试是靠实力还是靠运气 #
27195次浏览 302人参与
# 硬件/芯片公司工作体验 #
142187次浏览 943人参与
# 这些公司卡简历很严格 #
84222次浏览 379人参与
# 你们的毕业论文什么进度了 #
1234611次浏览 9906人参与
# 哪些公司在招寒假实习? #
23573次浏览 338人参与
# 牛客十周岁生日快乐 #
203904次浏览 1914人参与
# 招聘要求与实际实习内容不符怎么办 #
149972次浏览 891人参与
# 快手工作体验 #
296673次浏览 2896人参与
# 工作后明白的那些道理 #
52627次浏览 857人参与
# TCL求职进展汇总 #
139795次浏览 658人参与
# 怎么防止在试用期被辞退 #
153750次浏览 959人参与
# 国企vs私企,你更想去? #
306641次浏览 2499人参与
查看8道真题和解析