#include <bits/stdc++.h>
using namespace std; int TEST;
int n;
string s;
map<char, int> chars;
int cnt[26];
int main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> TEST;
while (TEST--) {
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> s;
for (char c : s) {
cnt[int(c - 'a')] += 1;
}
}
bool isGood = true;
for (int i = 0; i < 26; ++i) {
if (cnt[i] % n != 0) isGood = false;
cnt[i] = 0;
}
cout << (isGood ? "YES" : "NO") << "\n";
}
return 0;
}
A. Juggling Letters
각 알파벳이 나타난 횟수를 센다.
모든 문자열이 같아지게 하려면 각 알파벳은 문자열의 개수의 배수 만큼 있어야 한다.
#include <bits/stdc++.h>
using namespace std;
long long n;
long long arr[100001];
int main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n;
for (int i = 1; i <= n; ++i) cin >> arr[i];
if (n == 1) {
cout << "1 1" << "\n";
cout << 1 << "\n";
cout << "1 1" << "\n";
cout << 1 << "\n";
cout << "1 1" << "\n";
cout << -(arr[1] + 2);
}
if (n == 2) {
cout << "1 1" << "\n";
cout << -arr[1] << "\n";
cout << "2 2" << "\n";
cout << 1 << "\n";
cout << "2 2" << "\n";
cout << -(arr[2] + 1);
}
if (n >= 3) {
cout << "1 1" << "\n";
cout << arr[1] * (n - 1) << "\n"; // n - 1 is always divisible by 1
arr[1] += arr[1] * (n - 1);
cout << "2 " << n << "\n"; // n - 1 is always divisible by n - 1
for (int i = 2; i <= n; ++i) {
cout << arr[i] * (n - 1) << " ";
arr[i] += arr[i] * (n - 1);
}
cout << "\n";
cout << "1 " << n << "\n"; // n is always divisible by n
for (int i = 1; i <= n; ++i) {
cout << -arr[i] << " ";
}
}
return 0;
}
C - Multiples of Length
수열의 길이가 1일 때, 2일 때, 그 이상일 때로 구분할 수 있다.
수열의 길이가 1일 때 :
- 1을 더한다. segment의 길이가 1이므로 어떤 수를 더하거나 빼도 된다.
- 다시 1을 더한다.
- 자기 자신을 뺀다.
수열의 길이가 2일 때:
- 수 하나 (A) 를 선택하여 자기 자신을 빼 0으로 만든다.
- 남은 수 (B) 를 선택하여 1을 더한다.
- B에서 B를 빼면 마저 0이 된다.
그 이상일 때:
- 첫 수를 선택하여 Arr[1] * (수열의 길이 - 1) 을 더한다.
- 나머지 [2:n] i번째 수들을 선택하여 Arr[i] * (수열의 길이 - 1) 을 더한다. 이 segment의 길이는 수열의 길이 - 1 이고, 각 더해지는 수는 Arr[i] * (수열의 길이 - 1) 이므로 수열의 길이 - 1 의 배수이다.
- 이전 두 단계를 통해 모든 수는 Arr[i] + Arr[i] * (수열의 길이 - 1) 가 되었고, 이는 최초 Arr[i] * (수열의 길이) 와 같으므로 모든 수는 수열의 길이 의 배수이다. 따라서 모두 자기 자신으로 뺄 수 있다.
'알고리즘 > Codeforces' 카테고리의 다른 글
Codeforces Round #683 (Div. 2, by Meet IT) AB (0) | 2020.11.16 |
---|---|
Codeforces Round #669 (Div. 2) ABC (0) | 2020.09.09 |
Educational Codeforces Round 93 (Rated for Div. 2) AB (0) | 2020.08.15 |
Codeforces Round #664 (Div. 2) AB (0) | 2020.08.13 |
Codeforces Round #663 (Div. 2) ABC (0) | 2020.08.10 |
댓글