题解:AT_abc416_d [ABC416D] Match, Mod, Minimize 2

题目说 0Ai,Bi<M0\le A_i,B_i <M,有两种情况。

  1. Ai+Bi<MA_i+B_i <M,对答案贡献为 Ai+BiA_i+B_i
  2. Ai+BiMA_i+B_i\ge M,即 MAi+Bi<2MM\le A_i+B_i<2M,对答案贡献为 Ai+BiMA_i+B_i-M

所以对答案的贡献不是 Ai+BiA_i+B_i 就是 Ai+BiMA_i+B_i-M

答案的柿子就变成了这样:

(i=1N(Ai+Bi))kM(\sum_{i=1}^N(A_i+B_i))-kM

其中 kk 是有多少对 Ai+BiMA_i+B_i\ge M

为了让答案最小,即 kk 要尽可能地大。

我们可以先排序,然后用双指针来求。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,a[314514],b[314514],ans;
void fkM28(){
ans=0;
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i],ans+=a[i];
for(int j=1;j<=n;j++)cin>>b[j],ans+=b[j];
sort(a+1,a+n+1),sort(b+1,b+n+1);
for(int i=1,j=n;i<=n;i++)
if(a[i]+b[j]>=m)
j--,ans-=m;
cout<<ans<<"\n";
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int t;
cin>>t;
while(t--)fkM28();
return 0;
}

题解:AT_abc416_d [ABC416D] Match, Mod, Minimize 2
http://zhoujunchen666.github.io/2025/07/27/题解:AT-abc416-d-ABC416D-Match-Mod-Minimize-2/
作者
zhoujunchen
发布于
2025年7月27日
许可协议