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

题解:AT_abc147_f [ABC147F] Sum Difference

题意

在一个等差数列中取出若干个元素,求取出的元素与未取出的元素的差值有多少种可能。

思路

首先,我们有一个式子:

\[w(i)=\sum_{i \in S}A_i-\sum_{i \notin S}A_i \]

不难看出,该式可以变为:

\[w(i)=2\times \sum_{i \in S}A_i-\sum_{i=1}^{n}A_i \]

其实,\(\sum_{i=1}^{n}+A_i\)\(2\) 是一个定值,所以我们只需求出 \(\sum_{i \in S}A_i\) 的不同和即可。

不难看出 \(A_i=X+(i-1)\times num\),其中 \(X\) 为首项,\(num\) 为公差。

所以,假如我们选取了 \(t\) 个数,那它们的总和必定为 \(tX+num \times s\)

\(s\) 如何求?

不难看出,最小的肯定是选前 \(t\) 个,最大的则是选后 \(t\) 个,所以 \(s\) 的范围为 \([\frac{t\times(t-1)}{2} ,\frac{(2n-1-t)\times t}{2}]\)

但是,我们还需要考虑覆盖的情况,也就是:

\[t_i\times x+k_i\times num=t_j\times x+k_j\times num \]

移项得:

\[(t_i-t_j)\times x=(k_j-k_i)\times num \]

可推出:

\[num \mid (t_i-t_j)\times x \]

可得 \(t_i \times x\)\(t_j \times x\) 对模 \(num\) 同余。

所以,我们可以直接把 \(t_i \times x\)\(t_j \times x\) 余数相等的放到一起,求一下区间覆盖即可。

Code

#include<bits/stdc++.h>
#define int long long 
using namespace std;
int n,x,num,ans;
struct node{int l,r;bool operator<(const node& x)const{return l<x.l;}
};
vector<node> v[2000005];
map<int,int> M;
int cnt;
signed main(){scanf("%lld%lld%lld",&n,&x,&num);if(!num){if(!x) puts("1");else printf("%lld\n",n+1);return 0;}for(int t=0;t<=n;t++){if(!M[t*x%num]) M[t*x%num]=++cnt;v[M[t*x%num]].push_back({t*(t-1)/2+(t*x/num),(2*n-1-t)*t/2+(t*x/num)});}for(int i=1;i<=cnt;i++){sort(v[i].begin(),v[i].end());int L=v[i][0].l,R=v[i][0].r;for(int j=1;j<v[i].size();j++){if(v[i][j].l<=R) R=max(v[i][j].r,R);else ans+=(R-L+1),L=v[i][j].l,R=v[i][j].r;}ans+=(R-L+1);}printf("%lld\n",ans);return 0;
}
http://www.jsqmd.com/news/35890/

相关文章:

  • 20231326《密码系统设计》第八周预习报告
  • PERL Docker 容器化部署指南
  • 解放双手!使用Roslyn生成代码让你的 HTTP 客户端开发变得如此简单
  • pandoc用法
  • JMeter:性能测试利器全解析 - 实践
  • 251109
  • electron-vite为linux打包成功,但是安装后运行无反应
  • 20231427田泽航第八周预习报告
  • 吐血推荐!6款超好用的AI论文写作工具
  • 完整教程:金蝶云星瀚 | 生产制造成本核算终极实操手册(从0到1,含两套完整案例)
  • 实用指南:TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 自动微分和梯度
  • 浏览器Blockstack.org全名字段输入限制缺失漏洞分析
  • 2025年维修厂家推荐排行榜单:行业权威解析
  • 2025年维修厂家口碑排行榜:专业制冷服务首选
  • 行业内专业的维修厂家功能亮点
  • 第四天 linux命令整理汇总
  • Dask-权威指南-全-
  • WGCLOUD磁盘告警有没有恢复通知
  • 疑似 CSP-SB、CSP-JB、NOSb 考题泄露
  • 人工智能团队的技术工具
  • C++之开始学习C++(二) - Invinc
  • 如何禁止谷歌浏览器更新提示
  • Azure-Arc-支持的面向多云的-Kubernetes-指南-全-
  • 拓扑 AC 2025 线上 NOIP 联测 #2
  • 04--CSS基础(3) - 指南
  • P14462 【MX-S10-T3】『FeOI-4』寻宝游戏
  • 完整教程:FocusAny 发布v1.1.0 插件搜索过滤,FAD文件优化,插件显示MCP服务
  • 11.9 模拟赛 T3
  • CSP2025游记
  • 深入解析:从零构建鸿蒙高效数据恢复工具:完整实战教程与可运行Demo