关注
楼上大佬单调栈解法太强了
能不能帮忙看看我的代码是否可行,应该是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 18:23
深圳大学 前端工程师 程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习的你做了哪些离谱的工作 #
6297次浏览 91人参与
# 小厂实习有必要去吗 #
77385次浏览 363人参与
# MiniMax求职进展汇总 #
1611次浏览 25人参与
# 简历第一个项目做什么 #
4998次浏览 78人参与
# 工作压力大,你会干什么? #
8229次浏览 204人参与
# 我的付费上班经历 #
9577次浏览 161人参与
# 找实习记录 #
17296次浏览 303人参与
# 如果不上班,你会去做什么 #
4348次浏览 197人参与
# AI让你的思考变深了还是变浅了? #
3079次浏览 90人参与
# 邪修省钱套路 #
5149次浏览 184人参与
# 为了入行xx岗,我学了__ #
3615次浏览 59人参与
# 参加哪些竞赛对找工作有帮助? #
5904次浏览 111人参与
# 我是XXX,请攻击我最薄弱的地方 #
54388次浏览 382人参与
# 听到哪句话代表面试稳了OR挂了? #
124130次浏览 553人参与
# 你觉得什么岗位会被AI替代 #
33733次浏览 227人参与
# 你都见过什么样的草台班子? #
549次浏览 21人参与
# 通信硬件薪资爆料 #
1199818次浏览 7191人参与
# 租房找室友 #
58305次浏览 240人参与
# 我的职场社死时刻 #
57892次浏览 359人参与
# 考研人,我有话说 #
160567次浏览 1227人参与
# 携程工作体验 #
20753次浏览 79人参与
曼迪匹艾公司福利 134人发布