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+输出路径)

[ACM]Codeforces Round #534 (Div. 2)

Codeforces 708B. Recover the String