-
https://www.acmicpc.net/problem/1256
1256번: 사전
동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 김진영 조교는 동호와 규완이에게 특별 과제를 주었다. 특별 과제는 특별한 문자열로 이루어 진 사전을 만드는 것이다. 사전에 수록되
www.acmicpc.net
꽤 자주 보이는 조합론&dp 문제
#include <bits/stdc++.h>using namespace std;#ifdef ONLINE_JUDGEconstexpr bool local = false;#elseconstexpr bool local = true;#endifusing ll = long long;using pi = pair<ll, ll>;ll n, m, k, dp[201][201];ll c(ll A, ll B) { return dp[A + B][B]; }void f(ll i, ll j, ll idx) {if (i == 0 && j == 0) return;if (i == 0) {cout << 'z';f(i, j - 1, idx);return;}if (j == 0) {cout << 'a';f(i - 1, j, idx);return;}ll nxt = c(i - 1, j);if (nxt >= idx) {cout << 'a';f(i - 1, j, idx);} else {cout << 'z';f(i, j - 1, idx - nxt);}}int main(void) {if (!local) ios_base::sync_with_stdio(0), cin.tie(0);cin >> n >> m >> k;ll i, j;for (i = 0; i <= 200; i++) dp[i][0] = dp[0][i] = 1;dp[1][1] = 1;for (i = 2; i <= 200; i++)for (j = 1; j <= 200; j++)dp[i][j] = min(dp[i - 1][j] + dp[i - 1][j - 1], (ll)1e9);if (k > c(n, m)) {cout << -1;return 0;}f(n, m, k);return 0;}
'BOJ' 카테고리의 다른 글
[2002] 추월 (0) 2022.03.09 [1662] 압축 (0) 2022.03.09 [15684] 사다리 조작 (0) 2022.03.06 [15810] 풍선 공장 (0) 2022.03.04 [6236] 용돈 관리 (0) 2022.03.02