关注
楼上大佬单调栈解法太强了
能不能帮忙看看我的代码是否可行,应该是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;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 这个offer值得去吗? #
21022次浏览 178人参与
# 上班苦还是上学苦呢? #
345273次浏览 2069人参与
# 联宝杯大学生创新大赛,你的技术值得产业级答案 #
47740次浏览 517人参与
# 如果春招能重来,我会___ #
21663次浏览 229人参与
# 提名点击就挂的公司 #
144177次浏览 491人参与
# 除了线上,还能去哪些地方投简历 #
11734次浏览 116人参与
# 在爱玛,骑向未来 #
2939次浏览 319人参与
# 字节开奖 #
151390次浏览 693人参与
# 实习怎么做才有更好的产出 #
49952次浏览 457人参与
# AI coding的好用工具分享 #
88464次浏览 567人参与
# 找工作以来,你最看不惯__ #
79426次浏览 594人参与
# 大学四年该怎么过,才不算浪费时间? #
23861次浏览 107人参与
# 运营每日一题 #
144366次浏览 978人参与
# 面试等了一周没回复,还有戏吗 #
246003次浏览 1857人参与
# 字节7000实习来了,你投了吗? #
55256次浏览 421人参与
# 毕业后不工作的日子里我在做什么 #
269135次浏览 1739人参与
# 薪资爆料 #
422534次浏览 2226人参与
# HR问:你期望的薪资是多少?如何回答 #
99344次浏览 833人参与
# 我的秋招“寄”录 #
476388次浏览 3063人参与
# 哪一刻你突然觉得实习“有点值了” #
28279次浏览 177人参与
# 双非本科求职如何逆袭 #
1649021次浏览 13083人参与
# 双非应该如何逆袭? #
586731次浏览 6396人参与
