当前位置: 首页 > news >正文

好题集 (3) - LG P2122 还教室

题目传送门。

(多倍经验:P1471,P10511,P5142)

首先做查询。平均数好做,考虑方差怎么搞。大力推柿子:

\[\begin{align*} s^2&=\frac{\sum\limits_{i=1}^n(x_i-\overline{x})^2}{n}\\ &=\frac{\sum\limits_{i=1}^n(x_i^2-2x_i+\overline{x}^2)}{n}\\ &=\frac{(n\overline{x}^2)+(\sum\limits_{i=1}^nx_i^2)-2\overline{x}\cdot(\sum\limits_{i=1}^nx_i)}{n}\\ &=\frac{\overline{x}(n\overline{x}-2\cdot\sum\limits_{i=1}^nx_i)+(\sum\limits_{i=1}^nx_i^2)}{n}\\ &=\frac{(\sum\limits_{i=1}^nx_i^2)-\overline{x}\cdot(\sum\limits_{i=1}^nx_i)}{n}\\ &=\frac{(\sum\limits_{i=1}^nx_i^2)-\frac{(\sum\limits_{i=1}^nx_i)^2}{n}}{n}\\ &=\frac{n\cdot(\sum\limits_{i=1}^nx_i^2)-(\sum\limits_{i=1}^nx_i)^2}{n} \end{align*} \]

这样就容易维护了。接下来考虑区间加时怎么更新整块的平方和,依旧推柿子:

\[\begin{align*} \sum\limits_{i=1}^n(x_i+v)^2&=\sum\limits_{i=1}^n(x_i^2-2x_iv+v^2)\\ &=(\sum\limits_{i=1}^nx_i^2)+2v\cdot(\sum\limits_{i=1}^nx_i)+nv^2 \end{align*} \]

然后分个块就可以做了。代码:

#include<iostream>
#include<cmath>
#define ll long long
using namespace std;const int N=1e5+5;
const int M=320;int n,m;ll a[N];namespace OIfast{#define gc getchar()inline unsigned read(){unsigned n=0;char c=gc;while(!isdigit(c))c=gc;while(isdigit(c))n=(n<<3)+(n<<1)+(c^48),c=gc;return n;}}using namespace OIfast;namespace Math{inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}inline ll pf(ll x){return x*x;}}using namespace Math;namespace FK{int k,tot;short loc[N];int L[M],R[M];ll s[M],ss[M],la[M];inline void pushdown(int i){for(int j=L[i];j<=R[i];++j)a[j]+=la[i];return la[i]=0,void();}inline void pushup(int i){s[i]=ss[i]=0;for(int j=L[i];j<=R[i];++j)s[i]+=a[j],ss[i]+=pf(a[j]);return ;}inline void init(){k=sqrt(n),tot=ceil((1.0*n)/(1.0*k));for(int i=1;i<=tot;++i){L[i]=(i-1)*k+1,R[i]=min(n,L[i]+k-1);for(int j=L[i];j<=R[i];++j)loc[j]=i;pushup(i);}return ;}inline void upd(int l,int r,ll v){if(loc[l]==loc[r]){pushdown(loc[l]);for(int i=l;i<=r;++i)a[i]+=v;pushup(loc[l]);}else{pushdown(loc[l]);for(int i=l;i<=R[loc[l]];++i)a[i]+=v;pushup(loc[l]);pushdown(loc[r]);for(int i=L[loc[r]];i<=r;++i)a[i]+=v;pushup(loc[r]);for(int i=loc[l]+1;i<=loc[r]-1;++i)la[i]+=v,ss[i]+=2*v*s[i]+(R[i]-L[i]+1)*pf(v),s[i]+=(R[i]-L[i]+1)*v;}return ;}inline ll qry_s(int l,int r){ll res=0;if(loc[l]==loc[r]){pushdown(loc[l]);for(int i=l;i<=r;++i)res+=a[i];pushup(loc[l]);}else{pushdown(loc[l]);for(int i=l;i<=R[loc[l]];++i)res+=a[i];pushup(loc[l]);pushdown(loc[r]);for(int i=L[loc[r]];i<=r;++i)res+=a[i];pushup(loc[r]);for(int i=loc[l]+1;i<=loc[r]-1;++i)res+=s[i];}return res;}inline ll qry_ss(int l,int r){ll res=0;if(loc[l]==loc[r]){pushdown(loc[l]);for(int i=l;i<=r;++i)res+=pf(a[i]);pushup(loc[l]);}else{pushdown(loc[l]);for(int i=l;i<=R[loc[l]];++i)res+=pf(a[i]);pushup(loc[l]);pushdown(loc[r]);for(int i=L[loc[r]];i<=r;++i)res+=pf(a[i]);pushup(loc[r]);for(int i=loc[l]+1;i<=loc[r]-1;++i)res+=ss[i];}return res;}#define pii pair<ll,ll>#define mp make_pair#define fir first#define sec secondinline pii dx(int l,int r){ll a=qry_s(l,r),b=r-l+1;if(!a)return mp(0,1);ll g=gcd(a,b);return mp(a/g,b/g);}inline pii fc(int l,int r){ll a=(r-l+1)*qry_ss(l,r)-pf(qry_s(l,r)),b=pf(r-l+1);if(!a)return mp(0,1);ll g=gcd(a,b);return mp(a/g,b/g);}}using namespace FK;inline void work(){int op=read(),l=read(),r=read();if(1==2)puts("wow");else if(op==1){ll d=read();upd(l,r,d);}else if(op==2){pii tmp=dx(l,r);printf("%lld/%lld\n",tmp.fir,tmp.sec);}else if(op==3){pii tmp=fc(l,r);printf("%lld/%lld\n",tmp.fir,tmp.sec);}return ;
}signed main(){n=read(),m=read();for(int i=1;i<=n;++i)a[i]=read();init();while(m--)work();return 0;
}

提交记录。

http://www.jsqmd.com/news/40495/

相关文章:

  • 好题集 (2) - LG P4550 收集邮票
  • python3如何切换路径
  • 腾讯元宝如何导出内容为文档
  • 2025-11-14 早报新闻
  • Number Theory
  • 2025年11月眉笔选购指南:花西子/植村秀/珂拉琪等5大品牌实测,新手闭眼入款竟是它​
  • Upcoming Rust language features for kernel development - 教程
  • 详细介绍:Linux网络性能测试利器:iperf3使用指南
  • linux 安装telnet 服务
  • 实用指南:【STM32】RTC实时时钟
  • 探索乐泰胶水:性能与适用场景全解析
  • 【System Beats!】第七章 链接
  • oracle 11g r2 linux
  • 实用指南:接口测试 | 使用Postman实际场景化测试
  • 应用程序建立的数据库连接,也就是非交互式连接 是什么时候开始的?什么时候结束?连接结束后 会影响应用程序操作db失败吗? 还有就是如果连接关闭了 会立马重新建立新的连接吗?
  • 2025高压合金管实力厂家推荐榜:5310/6479 高压合金管型号领衔,天津大无缝联合钢铁有限公司五星领跑工业用材赛道
  • Kafka协调器:消费者组管理与重平衡机制 - 指南
  • #题解#洛谷P1884#二维离散化#
  • HarmonyOS应用配置文件与资源组织深度解析 - 教程
  • 2025扫描电镜精选榜:富泰微五星领衔,日立、国仪携超高分辨率/钨灯丝 SEM,适配科研工业多元需求
  • 2025智能科技/医疗设备/信息科技/新中式茶饮/科创/平面/东方美学/品牌设计/品牌logo设计/品牌VI设计领域优质公司排行榜:聚焦全案创意与视觉赋能,3 家机构助力品牌高效破圈
  • 2025修护/二硫化硒去屑/香氛/控油蓬松/洗发水品牌推荐榜:精准护养新选择,MASIL玛丝兰领衔解决头屑、扁塌等护发难题
  • 2025防火/模压/瓦楞/大跨距/热镀锌/热浸锌/不锈钢/光伏/铝合金/锌铝镁电缆桥架优选榜:河北百著全系列防护覆盖 三家实力厂家凭场景优势突围
  • 2025厨房/无烟管/商用/复合式/内循环/小型/油烟净化/一体机推荐榜:上海多环五星领跑 全场景适配解锁餐饮 / 家用净化新体验
  • 2分钟选刊!值得农林环境人收藏的6个期刊!境科研人必备!
  • antd 上传文件组件在表单回显时不显示下载按钮
  • 2025武汉车出租厂家推荐榜:防撞车出租/高空车出租/登高车出租/服务体验与高性价比深度解析
  • 2025滚齿机优质厂家推荐榜:济南兴宇数控五星领跑,三大厂商凭技术与适配性成行业标杆
  • 2025年芝麻白/芝麻灰/火烧面/亚光面/花岗岩/路岩石优质厂家优选榜:聚焦专业品质,助力工程建设
  • 102302141_易敏亮第三次数据采集作业