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

CCPC2024-Zhengzhou G Same Sum(线段树)

CCPC2024-Zhengzhou G Same Sum

给一个序列。两种操作:

  1. 区间加;

  2. 查询一个偶数长区间,其中的值是否可以两两配对得到和相等。

首先知道区间内的值两两配对得到的相等的和值为区间的平均数 m 。

可以转化为,这个区间的值分布关于 m 对称。

\[x^{a_i+a_j}=x^{2m} \Rightarrow x^{a_i}=\frac{x^{2m}}{x^{a_j}}, x^{a_j}=\frac{x^{2m}}{x^{a_i}} \]

\[\sum_{i=l}^r x^{a_i}=x^{2m}\sum_{i=l}^r x^{-a_i} \]

维护区间平均值 m,\(\sum x^{a_i}\)\(\sum x^{-a_i}\) 即可。

这个值为什么能正确刻画这个分布?我还没搞明白...QvQ?

const i64 x=(rng()%P*rng()%P)%P;
i64 ux; // ux=power(x,P-2);i64 power(i64 A,i64 B)
{u64 ANS=1,BASE=A%P;for (;B;B>>=1,BASE=BASE*BASE%P)if (B&1) ANS=ANS*BASE%P;return ANS;
}void R()
{int n,q;cin>>n>>q;vector<i64> a(n);for (int i=0;i<n;i++) cin>>a[i];vector<Info> info(n);for (int i=0;i<n;i++)info[i]={power(x,a[i]),power(ux,a[i]),a[i],i,i};SGT<Info,Tag> sgt(info);while (q--){int opt,l,r;i64 v;cin>>opt>>l>>r; l--;if (opt==1){cin>>v;sgt.rangeApply(l,r,{power(x,v),power(ux,v),v});}else{auto [U,V,m,ll,rr]=sgt.rangeQuery(l,r);i64 len=r-l;if (m%(len/2)!=0) { cout<<"NO\n"; continue; }if (V*power(x,m/(len/2))%P==U) cout<<"YES\n";else cout<<"NO\n";}}return;
}
http://www.hskmm.com/?act=detail&tid=17206

相关文章:

  • Openwrt-DDNS 配置详解
  • 实用指南:Metal - 2. 3D 模型深度解析
  • 【2025.9.16】关于举办PostgreSQL数据库管理人才研修与评测班的通知
  • Java锁相关问题
  • CDN中使用边缘函数实现自定义编程
  • 第一次课程中的所有动手动脑的问题以及课后实验性的问题
  • 敏捷开发的几个阶段
  • 隐藏在众目睽睽之下:从PEB中解除恶意DLL的链接
  • 设计模式六大原则 - 实践
  • 运营商 API 安全最佳实践、案例与方案推荐(2025)|千万级接口的全链路实战
  • HyperWorks许可与多用户支持
  • react 中 keys 的作用是什么?
  • 破局与进化:火山引擎Data Agent从落地实践到架构未来
  • 五项能力斩获满分!天翼云云WAF获IDC权威认可!
  • 什么样的代码可以称得上是好代码? - 浪矢
  • 微软Teams Channel Agent上线:中国卖家AI赋能品牌出海新机遇与实战策略(2025前瞻) - 详解
  • docker制作
  • lvgl 9.3 style使用导致内存泄漏问题
  • 【AI领域】如何写好Prompt提示词:从新手到进阶的完整指南 - 详解
  • 11_Reactor网络模型
  • 「LNOI2022」盒
  • 【文摘随笔】从业开发工作五年后,再读短篇《孔乙己》——年少不懂孔乙己,长大已成孔乙己
  • 为什么我选择了 PSM 敏捷认证?
  • 外键
  • 菜油
  • 索引
  • 存储过程
  • 编写msyql8.0.21 数据库批量备份脚本
  • 完整教程:基础算法---【差分】
  • Android 源码中如何生成一个platform JKS 文件?