2 条题解
-
1
答辩题
这个题的空间限制非常紧,只能哈希做
#include <cstdio> const int N = 2.5e6 + 20, M = 2e4 + 7; int n, m; char c; void in(int &x) { c = getchar(); while(c > '9' || c < '0') c = getchar(); for(x = 0; c >= '0' && c <= '9'; c = getchar()) x = x * 10 + c - '0'; } int Hash(int x) { return ((x ^ 1188281) + (x & 12214514)) % M; } int h[M + 20]; int main() { in(n); in(m); if(m == 1) { puts("Yes"); return 0; } int x; while(n --) { in(x); x = Hash(x); x = (x % M + M) % M; h[x] ++; } int i = 0; while(i < M) if(h[i] % m){puts("No"); return 0;} else i ++; puts("Yes"); return 0; }
信息
- ID
- 229
- 时间
- 1500ms
- 内存
- 12MiB
- 难度
- 9
- 标签
- 递交数
- 887
- 已通过
- 35
- 上传者