开始: 2026-03-23 00:00:00

25-26赛季联合赛04

结束: 2026-03-26 00:00:00
当前  2026-04-05 04:26:33  类型: IOI  状态: 已经结束 

题解

T5的vector写法


#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, a[100011], m;

void solve() {
	cin >> n >> m;
	for (int i = 1; i <= n; i++){
		int x;
		cin>>x;
		a[i]=x%m;
	}
	if (n > m) {
		cout << "YES\n";
		return;
	}
	vector<int> f(m + 1, 0);
	for (int i = 1; i <= n; i++) {
		vector<int> dp(m + 1, 0);
		for (int j = 0; j < m; j++) {
			if (f[j]) {
				dp[j] = dp[(j + a[i]) % m] = true;
			}
		}
		dp[a[i]] = true;
		if (dp[0]) {
			cout << "YES\n";
			return;
		}
		f = dp;
	}
	cout << "NO\n";
}

signed main() {
	int t;
	cin >> t;
	while (t--)
		solve();
	return 0;
}