π₯ PS(Problem Solving) π₯/BOJ
[BOJ] #11722 κ°μ₯ κΈ΄ κ°μνλ λΆλΆμμ΄
dar0m!
2019. 12. 16. 02:18
μκ° μ ν | λ©λͺ¨λ¦¬ μ ν | μ λ΅ λΉμ¨ |
1 μ΄ | 256 MB | 64.883% |
https://www.acmicpc.net/problem/11722
11722λ²: κ°μ₯ κΈ΄ κ°μνλ λΆλΆ μμ΄
μμ΄ Aκ° μ£Όμ΄μ‘μ λ, κ°μ₯ κΈ΄ κ°μνλ λΆλΆ μμ΄μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€. μλ₯Ό λ€μ΄, μμ΄ A = {10, 30, 10, 20, 20, 10} μΈ κ²½μ°μ κ°μ₯ κΈ΄ κ°μνλ λΆλΆ μμ΄μ A = {10, 30, 10, 20, 20, 10} μ΄κ³ , κΈΈμ΄λ 3μ΄λ€.
www.acmicpc.net
κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆμμ΄κ³Ό κ°μλ¬Έμ μ΄λ€.
κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆμμ΄μ 0 →n λ°©ν₯μΌλ‘ μννλ€λ©΄,
κ°μ₯ κΈ΄ κ°μνλ λΆλΆμμ΄μμλ n →0 λ°©ν₯μΌλ‘ μννλ€.
κ°λ¨ν λ°©ν₯λ§ λ°κΏνμλ€.
λ©λͺ¨λ¦¬ | μκ° |
1120 KB | 0 ms |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include<cstdio> using namespace std; int n, arr[1005], dp[1005], ans; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } for (int i = n-1; i >= 0; i--) { int max = 0; for (int j = n-1; j > i; j--) { if (arr[j] < arr[i]) { if (max < dp[j]) max = dp[j]; } } dp[i] = max + 1; ans = dp[i] > ans ? dp[i] : ans; } printf("%d", ans); return 0; } | cs |