Skip to content

Commit 2fbca77

Browse files
authored
[Week02] 줄서는방법, 상자넣기, 퇴사2
[Week02] 줄서는방법, 상자넣기, 퇴사2
2 parents e529dcb + ef3ba43 commit 2fbca77

File tree

3 files changed

+87
-0
lines changed

3 files changed

+87
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
4+
using namespace std;
5+
6+
int n, ret;
7+
int arr[1500001][2];
8+
int dp[1500001];
9+
10+
int main() {
11+
ios_base::sync_with_stdio(false);
12+
cin.tie(NULL);
13+
cout.tie(NULL);
14+
15+
cin >> n;
16+
17+
for (int i = 0; i < n; i++) {
18+
cin >> arr[i][0] >> arr[i][1];
19+
}
20+
21+
for (int i = n - 1; i >= 0; i--) {
22+
if (i + arr[i][0] <= n) {
23+
dp[i] = max(dp[i + 1], arr[i][1] + dp[i + arr[i][0]]);
24+
} else {
25+
dp[i] = dp[i + 1];
26+
}
27+
}
28+
29+
cout << dp[0] << '\n';
30+
return 0;
31+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
4+
using namespace std;
5+
6+
int n, len, num;
7+
int lis[1001];
8+
int main() {
9+
ios_base::sync_with_stdio(false);
10+
cin.tie(NULL);
11+
cout.tie(NULL);
12+
13+
cin >> n;
14+
15+
for (int i = 0; i < n; i++) {
16+
cin >> num;
17+
auto lowerPos = lower_bound(lis, lis + len, num);
18+
if (*lowerPos == 0) {
19+
len++;
20+
}
21+
*lowerPos = num;
22+
}
23+
24+
cout << len << '\n';
25+
return 0;
26+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#include <string>
2+
#include <vector>
3+
using namespace std;
4+
5+
vector<int> answer;
6+
vector<int> numbers;
7+
vector<long long> dp;
8+
9+
vector<int> solution(int n, long long k) {
10+
dp.resize(n);
11+
dp[0] = 1;
12+
for (int i = 1; i < n; i++) {
13+
dp[i] = dp[i-1] * i;
14+
}
15+
16+
for (int i = 1; i <= n; i++) {
17+
numbers.push_back(i);
18+
}
19+
20+
k--;
21+
22+
for (int i = 0; i < n; i++) {
23+
long long idx = k / dp[n-1-i];
24+
answer.push_back(numbers[idx]);
25+
numbers.erase(numbers.begin() + idx);
26+
k %= dp[n-1-i];
27+
}
28+
29+
return answer;
30+
}

0 commit comments

Comments
 (0)