티스토리 뷰
11333번: 4×n 타일링
각 테스트 케이스마다 문제의 정답을 1,000,000,007로 나눈 나머지를 출력한다.
www.acmicpc.net
기존의 2 x n 타일링 문제에서 파생된 문제여서 점화식 도출이 쉬울거라 예상하였지만
결론적으로 매우 복잡하였고 스택오버플로우에서 나올수있는 경우의수를 도움받아
식을 찾게되었고 바텀업으로 n의 최대범위까지 답을 채운후 TC만큼의 질의를 바로 응답하였다.
각 a, b, c, d, f 값을 0, 1, 2, 3, 4 로 치환하여 dp배열을 채웠다.
<코드>
더보기
#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 1e4+4;
const int MOD = 1e9+7;
int dp[MAX_N][5];
int f(int idx, int x)
{
return (idx < 0 ? 0 : dp[idx][x]);
}
int add(int dest, int src){
return (dest+src)%MOD;
}
void init()
{
dp[0][4] = 1;
for(int i=1; i<MAX_N; i++){
for(int j=0; j<5; j++){
int& ret = dp[i][j];
if(j == 0) {
ret = f(i-2, 4);
ret = add(ret, f(i-2, 1));
ret = add(ret, f(i-2, 2));
}
else if(j == 1)
ret = f(i-1, 0);
else if(j == 2)
ret = f(i-2, 3);
else if(j == 3){
ret = f(i-1, 4);
ret = add(ret, f(i-1, 2));
}
else{
ret = f(i-3, 4);
ret = add(ret, f(i-1, 0));
ret = add(ret, f(i-1, 0));
}
}
}
}
int main()
{
ios_base::sync_with_stdio(0), cin.tie(0);
init();
int TC;
cin >> TC;
while(TC--){
int x;
cin >> x;
cout << dp[x][4] << '\n';
}
return 0;
}
'백준 문제풀이' 카테고리의 다른 글
백준[baekjoon] 6064 (0) | 2021.02.15 |
---|---|
백준[baekjoon] 2336 (0) | 2021.02.11 |
백준[baekjoon] 8201 (0) | 2020.07.17 |
백준[baekjoon] 8462 (0) | 2020.05.27 |
백준[baekjoon] 14728 (0) | 2020.05.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ndisplay
- 퀸 움직이기
- BOJ 2365
- Codeforces
- Python
- 테트리스
- 초등부
- OpenVDB
- 코드포스
- C++게임
- 백준 2365
- DP
- UE5.3
- C++게임개발
- BOJ 27469
- 브레젠험 알고리즘
- 정보올림피아드
- 언리얼 자동화
- 언리얼 프로젝트 재생성
- Unreal Engine
- 백준 27469
- 언리얼 프로젝트 재생성 자동화
- 홍정모의 게임 만들기 연습 문제 패키지
- unreal enigne
- 숫자판 만들기
- opengl
- pygame
- ICPC 후기
- 백준
- tetris
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함