#include<bits/stdc++.h> using namespace std; const int N=2e5+10; double a[N]; double s[N]; class UnionSet{ public: vector<int> fa,mx,mn; UnionSet(int n):fa(n+1),mx(n+1),mn(n+1){ for(int i=0;i<=n;i++){ fa[i]=i; mx[i]=i; mn[i]=i; } } int find(int x){ return fa[x]=(fa[x]==x?x:find(fa[x])); } void merge(int a,int b){ int aa=find(a),bb=find(b); if(aa==bb)return; mx[bb]=max(max(mx[aa],mx[bb]),max(mn[bb],mn[aa])); mn[bb]=min(min(mn[bb],mn[aa]),min(mx[aa],mx[bb])); fa[aa]=bb; return; } }; int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++)s[i]=s[i-1]+a[i]; UnionSet se(n); while(m--){ int op; cin>>op; if(op==1){ int l,r; cin>>l>>r; for(int i=l;i<=r-1;i++){ se.merge(i,i+1); } } else{ int x; cin>>x; int l=se.mn[se.find(x)]; int r=se.mx[se.find(x)]; // printf("%d %d\n",l,r); double ans=(s[r]-s[l-1])/(r-l+1); printf("%.10lf\n",ans); } } return 0; }大佬帮忙看看我这个为什么会超时
点赞 评论

相关推荐

爱喝奶茶的垂耳兔拥抱太阳:感觉项目和实习没有技术亮点和难点,单纯说了自己干了啥
点赞 评论 收藏
分享
牛客网
牛客企业服务