关注
楼上大佬单调栈解法太强了
能不能帮忙看看我的代码是否可行,应该是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;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 同bg的你秋招战况如何? #
172651次浏览 1011人参与
# 2022毕业即失业取暖地 #
115355次浏览 702人参与
# 联影求职进展汇总 #
50291次浏览 320人参与
# 你实习是赚钱了还是亏钱了? #
27946次浏览 232人参与
# 毕业论文进行时 #
5665次浏览 78人参与
# 用一句话形容你的团队氛围 #
17212次浏览 176人参与
# 京东开奖 #
461699次浏览 2549人参与
# 哪些公司校招卡第一学历 #
219246次浏览 775人参与
# 我来点评面试官 #
15021次浏览 109人参与
# 联影医疗求职进展汇总 #
5011次浏览 23人参与
# 嵌入式岗知多少 #
57887次浏览 548人参与
# 面对逼签的应对技巧 #
5922次浏览 30人参与
# 今年秋招是回暖还是遇冷 #
28748次浏览 181人参与
# 扒一扒那些奇葩实习经历 #
125812次浏览 1096人参与
# 三一集团提前批进度交流 #
41639次浏览 229人参与
# 工作后,谈恋爱还和学生时代一样吗? #
41301次浏览 377人参与
# 秋招开始捡漏了吗 #
74282次浏览 528人参与
# 阿里云工作体验 #
33610次浏览 108人参与
# 找实习你看重大厂光环还是业务方向 #
40740次浏览 163人参与
# 找工作八股要背到什么程度? #
16553次浏览 238人参与
# 你的领导最像哪种动物,为什么? #
25982次浏览 136人参与

影石Insta360公司氛围 452人发布