关注
楼上大佬单调栈解法太强了
能不能帮忙看看我的代码是否可行,应该是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;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得面试是靠实力还是靠运气 #
26899次浏览 290人参与
# 哪些公司在招寒假实习? #
19593次浏览 256人参与
# MiniMax求职进展汇总 #
919次浏览 23人参与
# 秋招遇到的奇葩面试题 #
103075次浏览 421人参与
# 卷__卷不过你们,只能卷__了 #
13736次浏览 311人参与
# 互联网行业现在还值得去吗 #
49327次浏览 362人参与
# 26年哪些行业会变好/更差 #
21055次浏览 311人参与
# 写论文的崩溃时刻 #
7541次浏览 168人参与
# 秋招暂停,我将对以下公司做出处罚__ #
50162次浏览 200人参与
# 去年的flag与今年的小目标 #
11209次浏览 223人参与
# 通信硬件公司爆料 #
186644次浏览 548人参与
# 你不能接受的企业文化有哪些 #
13902次浏览 193人参与
# 有深度的简历长什么样? #
18047次浏览 368人参与
# 你都用AI做什么 #
7660次浏览 179人参与
# 入职第一天 #
11251次浏览 246人参与
# 关于春招你都做了哪些准备? #
122343次浏览 709人参与
# 国企vs私企,你更想去? #
306283次浏览 2494人参与
# 硬件/芯片公司工作体验 #
141941次浏览 939人参与
# 找工作中的小确幸 #
75636次浏览 439人参与
# 大家实习都在做什么? #
16620次浏览 224人参与
# 招聘要求与实际实习内容不符怎么办 #
149284次浏览 887人参与