티스토리 뷰
https://www.acmicpc.net/problem/1616
일단 길이가 \(M-1\) 개로 이루어진 모든 메시지에 대해 다음 메시지로 나올 수 있는 메시지들에 대해 간선을 이어준다.
이때, 간선의 가중치에는 추가되는 수가 부여된다.
아래의 경우는 \(K = 2\), \(M = 3\) 인 경우다.
여기서 오일러 경로를 사용해 지나쳐온 모든 간선들의 가중치를 저장해둔다.
저장된 값은 \(11101000\)이고, 놀랍게도, 저장된 메시지는 우리가 찾고자 하는 답이 된다.
시간 복잡도는 \(O(K^{M-1}*K)\) = \(O(K^{M})\) 이 된다.
직접 간선을 만들면 MLE가 나기 때문에 간선을 만들지 않고 처리해야 한다.
#include <bits/stdc++.h>
#define x first
#define y second
#define pb push_back
#define all(v) v.begin(),v.end()
#pragma gcc optimize("O3")
#pragma gcc optimize("Ofast")
#pragma gcc optimize("unroll-loops")
using namespace std;
const int INF = 1e9;
const int TMX = 1 << 18;
const long long llINF = 1e18+10;
const long long mod = 1e9+7;
const long long hashmod = 100003;
const int MAXN = 100000;
const int MAXM = 1000000;
typedef long long ll;
typedef long double ld;
typedef pair <int,int> pi;
typedef pair <ll,ll> pl;
typedef vector <int> vec;
typedef vector <pi> vecpi;
typedef long long ll;
int n,k,ne,pw = 1,p = -1,pv[4200005];
void dfs(int x) {
while(pv[x] != n) {
ne = 1LL*x*n%pw+pv[x];
pv[x]++;
dfs(ne);
}
if(p != -1) cout << p << ' ';
p = x%n;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0);
cin >> n >> k;
if(k-- == 1) {
for(int i = 0;i < n;i++) cout << i << ' ';
return 0;
}
for(int i = 1;i <= k;i++) pw *= n;
dfs(0);
}
'BOJ' 카테고리의 다른 글
[BOJ] 4011 기름 파기 (0) | 2021.08.03 |
---|---|
[BOJ] 1665 화물열차 (0) | 2021.08.03 |
[BOJ] 10169 안전한 비상연락망 (1) | 2021.02.02 |
[BOJ] 18913 Graph Coloring (0) | 2021.02.01 |
[BOJ] 1909 냄새 싫어 (4) | 2020.08.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스택
- 비요뜨
- 정렬
- BOJ
- 세그먼트 트리
- DP
- combination
- 1909
- Constructive
- hyper
- 하이퍼
- 쿼리
- PS
- Offline Dynamic Connectivity
- 알고리즘 문제 풀이
- 냄새 싫어
- 김춘배
- 앳코더
- 누적 합
- AtCoder
- 오일러 경로
- 비요뜨 존맛
- 수열과 쿼리
- ABC
- Rabin-Karp
- 간단한 풀이
- codeforces
- gunwookim
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함