1478A. Nezzar and Colorful Balls
看半天题,然后才发现是统计最大值。
int _;int main() {ios_base::sync_with_stdio(false), cin.tie(0);for (cin >> _; _--;) {int n;cin >> n;vector<int> a(n + 1, 0);for (int i = 0, x; i < n; ++i) cin >> x, a[x]++;cout << *max_element(a.begin(), a.end()) << "\n";}return 0;}
1478B. Nezzar and Lucky Number
int _;int dp[1010];bool f(int x, int d) {while (x) {if (x % 10 == d) return true;x /= 10;}return false;}int main() {ios_base::sync_with_stdio(false), cin.tie(0);for (cin >> _; _--;) {int q, x, d;cin >> q >> d;vector<int> v(15, 1e9);for (int i = 1; i <= 100; ++i) {x = i % d;if (f(i, d)) v[x] = min(v[x], i);}for (int i = 1; i <= q; ++i) {cin >> x;if (v[x % d] <= x)cout << "YES\n";elsecout << "NO\n";}}return 0;}
1478C. Nezzar and Symmetric Array
对d数组排个序,看一个每个出现的奇偶次数,其实 d 的顺序就是 a(绝对值) 的顺序对应过去的,两组应该是对称出现的。。
那可以按顺序求出对应的 a,要是求不出来或者出现重复,那么就失败,否则成功。
int _;int main() {ios_base::sync_with_stdio(false), cin.tie(0);for (cin >> _; _--;) {int n;cin >> n;vector<ll> d(2 * n);for (auto& x : d) cin >> x;sort(d.rbegin(), d.rend()); // 注意这里是逆排bool yn = 1;ll sum = 0;for (int i = 2; i < 2 * n; i += 2)if (d[i] == d[i - 1]) yn = 0;for (int i = 0; i < n && yn; i++) {if (d[2 * i] != d[2 * i + 1]) {yn = 0;break;}if ((d[2 * i] - sum) <= 0 or (d[2 * i] - sum) % (n - i) != 0) {yn = 0;break;}ll cur = (d[2 * i] - sum) / (n - i);if (cur & 1) {yn = 0;break;}sum += cur;}cout << (yn ? "YES\n" : "NO\n");}return 0;}
1478D. Nezzar and Board
x想成
,也就是x加上x 和y的差值,这个差值可以是正的也可以是负的。执行完之后我们可以对新的数字继续增加这个差值,所以我们就可以根据两个数字得出一个等差数列。数列内的数字都可以倍包含在数组a里。
而我们的目的是找出一个最小的差值 ,然后分别比对每一个
看是否可以由
和若干个
得到 k。先对 a 数组排个序,然后对所有的$ a[ i ]− a[ i − 1] $求
gcd,就得出了那个最小的差值 d。
// RioTian 21/01/29#include <bits/stdc++.h>using namespace std;using ll = long long;int _, n;ll k;ll gcd(ll a, ll b) { return a % b == 0 ? b : gcd(b, a % b); }int main() {ios_base::sync_with_stdio(false), cin.tie(0);for (cin >> _; _--;) {cin >> n >> k;vector<ll> a(n + 1);for (int i = 1; i <= n; i++) cin >> a[i];sort(a.begin() + 1, a.end());ll tmp = a[2] - a[1];for (int i = 2; i < n; i++) tmp = gcd(tmp, a[i + 1] - a[i]);ll x = llabs(a[1] - k);cout << (x % tmp == 0 ? "YES\n" : "NO\n");}return 0;}
