禄磊 发表于 2025-6-1 21:03:52

Acwing蓝桥杯集训·题解 week2

农夫约翰最喜欢的操作

分几步来:

[*]要满足\(a_i-x\)整除\(x\)
转化一下为,即满足\(a_i \equiv x \pmod M\) ,所以预处理,\(a_i=a_i \mod M\)
[*]由第一步,我们可以知道\(x\in (0,M-1)\)
[*]根据题意我们所求值 \(val=\sum_{i=1}^{i=n}|a_i-x|\)
当val取最小值时,由于中位数定理,x是序列\(a_i\)的中位数
[*]由于同余的性质,所以\(a_i \equiv a_i+M \pmod M\)

[*]所以x可以取不同的\(a_i\),就会有不同的序列,因此我们取每一个序列的中位数,比较每个序列的val,取最小
[*]当x取不同的\(a_i\)时,应该以\(a_i\)为中心建立一个序列,通过取余,将两边的\(a\)数量平衡
[*]为了方便这样处理可以\(a_i+M\)个数加到原序列之后,然后用前缀和快速求解

点击查看代码#includeusing namespace std;#define ll long long int n,x,k,m;const int maxn=4e5+10;int t;int w;ll sum; void solve(){        cin>>n>>m;                for(int i=1;i>w,w%=m;        sort(w+1,w+1+n);        for(int i=1;in>>m;    int l=1;    for(int i=1;i>a;    }    for(int i=1;i>b;            int now=0;            for(int j=1;jn;    cin>>s;    s=" "+s;   int r=n;    for(int i=1;i

谭皎洁 发表于 2025-10-20 21:02:37

感谢分享,下载保存了,貌似很强大

泻缥 发表于 2025-10-24 11:26:21

热心回复!

啪炽 发表于 2025-10-29 14:46:10

前排留名,哈哈哈

蔬陶 发表于 2025-12-11 07:01:06

谢谢楼主提供!

印萍 发表于 2025-12-18 15:38:51

分享、互助 让互联网精神温暖你我

扔飒 发表于 2026-1-14 03:12:53

不错,里面软件多更新就更好了

系味 发表于 2026-1-15 03:46:58

过来提前占个楼

邰怀卉 发表于 2026-1-20 10:25:31

分享、互助 让互联网精神温暖你我

仁夹篇 发表于 2026-1-22 18:31:10

鼓励转贴优秀软件安全工具和文档!

姜删懔 发表于 2026-1-22 20:35:08

感谢分享,学习下。

摹熹 发表于 2026-1-24 04:33:47

这个好,看起来很实用

姊囝 发表于 2026-1-27 04:03:48

这个有用。

高清宁 发表于 2026-1-29 03:53:49

前排留名,哈哈哈

院儿饯 发表于 2026-2-3 06:26:31

过来提前占个楼

亢安芙 发表于 2026-2-5 09:34:35

这个有用。

苗嘉惠 发表于 2026-2-8 03:10:32

谢谢分享,辛苦了

釉她 发表于 2026-2-8 04:13:55

用心讨论,共获提升!

盒礁泅 发表于 2026-2-8 14:42:11

懂技术并乐意极积无私分享的人越来越少。珍惜

轧岔 发表于 2026-2-8 17:41:38

鼓励转贴优秀软件安全工具和文档!
页: [1] 2
查看完整版本: Acwing蓝桥杯集训·题解 week2