楼上大佬单调栈解法太强了 能不能帮忙看看我的代码是否可行,应该是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; }
点赞 评论

相关推荐

2024-11-28 22:27
已编辑
西南交通大学 Java
Kensley:交大的学弟,整体挺好的 稍微有点乱可以考虑做减法了 并发和java可以合一起,知识上补充一下Redis集群技术的死角,主从,Sentinel,Cluster。 大计基改成课程就行:《计算机网络》《操作系统原理》《数据结构》《算法》。 最重要的,项目还要再挖掘,要用【问题/场景】驱动开发,效果放在最后一句就行,“基于XXX/集成XXX实现XXX功能,【解决XXX问题】,效果XXX”,比如基于Redis实现商品信息的读缓存,解决了浏览高峰时因高频访问MySQL偶发卡顿的问题,体感性能上升30% 排版相关的:1. 大段文本要做提炼,比如“XXX等有基本的了解”改为“了解XXX”,文本相关都可以喂给GPT看看精简效果;2.黑体粗有点多,长文本和奖项的加粗去掉,奖项的时间不用列;3. 项目和实习的时间挪到后面,保持一致
点赞 评论 收藏
分享
牛客网
牛客企业服务