尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

题解:AT_abc147_f [ABC147F] Sum Difference

题解:AT_abc147_f [ABC147F] Sum Difference
📅 发布时间:2026/6/22 10:12:38

题意

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

思路

首先,我们有一个式子:

\[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;
}

相关新闻

  • 20231326《密码系统设计》第八周预习报告
  • 解放双手!使用Roslyn生成代码让你的 HTTP 客户端开发变得如此简单
  • 251109

最新新闻

  • Codex底层认知五基石:Thread、Plan Mode、Skills、Agent与Context Window
  • AgentV-RL:用智能体验证器破解强化学习奖励设计难题
  • FCPO算法:轻量级混合群智能策略破解昂贵黑箱优化难题
  • 题解:AcWing 396 矿场搭建
  • 2026成都黄金回收实战经验!最新门店排行新鲜出炉 - 奢品小当家
  • 2026杭州装修公司深度剖析:基于多维度数据评选的六家优质榜单 - 资讯报道

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号