Codeforces Round #708 (Div. 2) B - M-arrays
Posted 尘封陌路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #708 (Div. 2) B - M-arrays相关的知识,希望对你有一定的参考价值。
题目链接:
https://codeforces.com/contest/1497/problem/B
思路:根据同余模定理,把数组当中每个数对m取模,然后放在一个vis数组中, 余数为x的和m-x的相匹配,而且这两个数如果相差小于等于1,那么组数加一即可,因为 x ,m-x, x 只需要一组,如果大于1 那么多余的就需要单独一组。
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int N=100010;
int a[N],vis[N];
int t,n,m;
int main()
cin>>t;
while(t--)
cin>>n>>m;
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
cin>>a[i];
vis[a[i]%m]++;
int sum=0,ans=0;
if(vis[0]) ans++;
for(int i=1;i<=m/2;i++)
if(vis[i]&&vis[i]==vis[m-i])
ans++;
else
ans+=abs(vis[i]-vis[m-i]);
cout<<ans<<endl;
return 0;
以上是关于Codeforces Round #708 (Div. 2) B - M-arrays的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #708 (Div. 2)(BCDE1)
codeforces708b// Recover the String //AIM Tech Round 3 (Div. 1)
Codeforces_AIM Tech Round 3 (Div. 1)_A
Codeforces Round #436 E. Fire(背包dp+输出路径)