https://www.acmicpc.net/problem/10844
10844λ²: μ¬μ΄ κ³λ¨ μ
첫째 μ€μ μ λ΅μ 1,000,000,000μΌλ‘ λλ λλ¨Έμ§λ₯Ό μΆλ ₯νλ€.
www.acmicpc.net
dpλ¬Έμ !
i \ j | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 2 | ||||||||
dp[i][j]μμ iλ μλ¦Ώμλ₯Ό, jλ μμ μ«μλ₯Ό μλ―Ένλ€.
μμ - dp[2][4] : 4λ‘ μμνλ 2μ리 μ«μ. μ΄ 2κ° (43,45)
1) νμ리 μ«μλ λͺ¨λ κ³λ¨μ
2) nμ리 μ«μ
- 1λ‘ μμ
- 10xxxx... , 12xxxx... λκ°μ§ κ²½μ° κ°λ₯
- μ μμ κ²½μ°, κ³λ¨μλ₯Ό λ§λλ €λ©΄ 101xxxx... κ° λμ΄μΌ ν¨
- λ°λΌμ κ²½μ°μ μλ 1λ‘ μμνλ n-2μ리 μ«μμ κ°μμΈλ° μ΄ κ°μ΄ dp[i-2][0]μ
- νμμ κ²½μ°μ μλ 2λ‘ μμνλ n-1μ리 μ«μμ κ°μμΈλ° μ΄ κ°μ dp[i-1][1]μ
- λ°λΌμ 1λ‘ μμνλ nμ리 μ«μμ κ³λ¨μλ dp[i][0] = dp[i-2][0] + dp[i-1][1]
- λμ리 μ«μμΌ κ²½μ°, 1λ‘ μμνλ 0μ리 μ«μ λͺ»κ΅¬νλ€. λ°λΌμ μ΄ κ²½μ°μλ§ λ°λ‘ ꡬν΄μ μ±μμ€λ€.
- 1λ‘ μμνλ λμ리 μ«μμ κ³λ¨μλ 10, 12 λκ°μ§κ° κ°λ₯νλ―λ‘ 2μ΄λ€
- 2~8λ‘ μμ
- dp[i][j] = dp[i-1][j-1] + dp[i+1][j+1]
- 9λ‘ μμ
- 98xxxx... λ§ κ°λ₯. λ°λΌμ dp[i][j] = dp[i-1][7]
#include <iostream>
using namespace std;
int main(){
int c = 1000000000;
int n; cin>>n;
int dp[n][9];
for(int i=0;i<9;i++) dp[0][i]=1;
for(int i=1;i<n;i++){
for(int j=0;j<9;j++){
if(j==0) {
if(i==1) dp[i][j]=2;
else dp[i][j]=((dp[i-2][0]%c)+ (dp[i-1][1]%c))%c;}
else if(j==8) dp[i][j] = dp[i-1][7]%c;
else dp[i][j] = (dp[i-1][j-1]+dp[i-1][j+1])%c;
}
}
int sum=0;
for(int i=0;i<9;i++) sum=(sum+dp[n-1][i])%c;
cout<<sum%c;
return 0;
}
'μκ³ λ¦¬μ¦ λ¬Έμ νμ΄ > DP' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€]1890λ²: μ ν (0) | 2023.02.14 |
---|---|
[λ°±μ€]11048λ²: μ΄λνκΈ° (0) | 2023.02.12 |
[λ°±μ€] 11057λ² : μ€λ₯΄λ§ μ (0) | 2023.02.10 |
[λ°±μ€] 1463λ² : 1λ‘ λ§λ€κΈ° (0) | 2023.01.20 |
[λ°±μ€] 12865λ²: νλ²ν λ°°λ (0) | 2023.01.17 |