Skip to content

Commit a581164

Browse files
authored
Merge pull request #19 from dsc-sookmyung/solutions
Solutions
2 parents 7cf20c2 + d97a82f commit a581164

File tree

15 files changed

+717
-0
lines changed

15 files changed

+717
-0
lines changed

04-240409/solution/A.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <bits/stdc++.h>
2+
#define X first
3+
#define Y second
4+
5+
using namespace std;
6+
7+
typedef long long ll;
8+
typedef long double ld;
9+
typedef pair<int, int> pi;
10+
typedef pair<pi, int> pii;
11+
typedef pair<pi, pi> pipi;
12+
13+
const int MAX = 1e6 + 7;
14+
const int MOD = 1e9 + 7;
15+
const int INF = 1e9 + 7;
16+
int dx[] = { -1, 1, 0, 0 };
17+
int dy[] = { 0, 0, -1, 1 };
18+
19+
int main (void)
20+
{
21+
ios_base::sync_with_stdio (false);
22+
cin.tie (NULL);
23+
cout.tie (NULL);
24+
25+
int A, B, C, N;
26+
cin >> A >> B >> C >> N;
27+
bool ans = false;
28+
for (int i = 0; i * C <= N && !ans; i++) {
29+
for (int j = 0; i * C + j * B <= N && !ans; j++) {
30+
int remain = N - i * C - j * B;
31+
if (remain % A == 0) ans = true;
32+
}
33+
}
34+
cout << ans << "\n";
35+
return 0;
36+
}

04-240409/solution/B.cpp

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#include <bits/stdc++.h>
2+
#define X first
3+
#define Y second
4+
5+
using namespace std;
6+
7+
typedef long long ll;
8+
typedef long double ld;
9+
typedef pair<int, int> pi;
10+
typedef pair<pi, int> pii;
11+
typedef pair<pi, pi> pipi;
12+
13+
const int MAX = 1e6 + 7;
14+
const int MOD = 1e9 + 7;
15+
const int INF = 1e9 + 7;
16+
int dx[] = { -1, 1, 0, 0 };
17+
int dy[] = { 0, 0, -1, 1 };
18+
string str;
19+
int N, len;
20+
bool visited[55];
21+
vector<int> nums;
22+
23+
bool backtrack (int idx) {
24+
if (idx == len) {
25+
for (auto& it : nums) cout << it << " ";
26+
cout << "\n";
27+
return true;
28+
}
29+
if (str[idx] == '0') return false;
30+
int num1 = str[idx] - '0';
31+
if (num1 > 0 && num1 <= N && !visited[num1]) {
32+
visited[num1] = true;
33+
nums.push_back (num1);
34+
if (backtrack (idx + 1)) return true;
35+
nums.pop_back();
36+
visited[num1] = false;
37+
}
38+
if (idx == len - 1) return false;
39+
int num2 = str[idx] - '0';
40+
num2 = num2 * 10 + str[idx + 1] - '0';
41+
if (num2 > 0 && num2 <= N && !visited[num2]) {
42+
visited[num2] = true;
43+
nums.push_back (num2);
44+
if (backtrack (idx + 2)) return true;
45+
nums.pop_back();
46+
visited[num2] = false;
47+
}
48+
return false;
49+
}
50+
51+
int main (void)
52+
{
53+
ios_base::sync_with_stdio (false);
54+
cin.tie (NULL);
55+
cout.tie (NULL);
56+
57+
cin >> str;
58+
for (int i = 1; i <= 50; i++) {
59+
if (i < 10) len++;
60+
else len += 2;
61+
if (str.length() == len) {
62+
N = i;
63+
break;
64+
}
65+
}
66+
backtrack (0);
67+
return 0;
68+
}

04-240409/solution/C.cpp

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#include <bits/stdc++.h>
2+
#define X first
3+
#define Y second
4+
5+
using namespace std;
6+
7+
typedef long long ll;
8+
typedef long double ld;
9+
typedef pair<int, int> pi;
10+
typedef pair<pi, int> pii;
11+
typedef pair<pi, pi> pipi;
12+
13+
const int MAX = 1e6 + 7;
14+
const int MOD = 1e9 + 7;
15+
//const int MOD = 998'244'353;
16+
const int INF = 1e9 + 7;
17+
int dx[] = { -1, 1, 0, 0, -1, 1, -1, 1 };
18+
int dy[] = { 0, 0, -1, 1, -1, -1, 1, 1 };
19+
int degree[100'001];
20+
21+
int main (void) {
22+
ios_base::sync_with_stdio (false);
23+
cin.tie (NULL);
24+
cout.tie (NULL);
25+
26+
int N;
27+
cin >> N;
28+
29+
for (int i = 1; i < N; i++) {
30+
int a, b;
31+
cin >> a >> b;
32+
degree[a]++;
33+
degree[b]++;
34+
}
35+
int Q;
36+
cin >> Q;
37+
while (Q--) {
38+
int t, k;
39+
cin >> t >> k;
40+
if (t == 2) cout << "yes\n";
41+
else {
42+
if (degree[k] == 1) cout << "no\n";
43+
else cout << "yes\n";
44+
}
45+
}
46+
return 0;
47+
}

04-240409/solution/D.cpp

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <algorithm>
4+
5+
using namespace std;
6+
7+
int main()
8+
{
9+
int n, x, tmp, cnt;
10+
vector<int> v;
11+
cin >> n;
12+
for (int i = 0; i < n; i++) {
13+
cin >> tmp;
14+
v.push_back(tmp);
15+
16+
}
17+
sort(v.begin(),v.end());
18+
cin >> x;
19+
int st, fn;
20+
st = 0;
21+
cnt = 0;
22+
for (int i = 0; i < n; i++) {
23+
//cout << v[i] << " ";
24+
}
25+
while (st < n) {
26+
fn = st + 1;
27+
while (fn != n) {
28+
if (v[st] + v[fn] > x) {
29+
break;
30+
}
31+
else if (v[st] + v[fn] < x) {
32+
fn++;
33+
}
34+
else {
35+
cnt++;
36+
break;
37+
}
38+
}
39+
st++;
40+
}
41+
cout << cnt;
42+
}

04-240409/solution/E.cpp

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#include <iostream>
2+
#include <vector>
3+
4+
using namespace std;
5+
6+
int main (void)
7+
{
8+
ios_base::sync_with_stdio (false);
9+
cin.tie (NULL);
10+
cout.tie (NULL);
11+
12+
int N;
13+
cin >> N;
14+
vector<int> arr(N);
15+
vector<int> prefix_sum(N, 0);
16+
for (int i = 0; i < N; i++)
17+
cin >> arr[i];
18+
for (int i = N - 2; i >= 0; i--)
19+
{
20+
prefix_sum[i] = prefix_sum[i + 1];
21+
if (arr[i] > arr[i + 1])
22+
prefix_sum[i]++;
23+
}
24+
int Q;
25+
cin >> Q;
26+
while (Q--)
27+
{
28+
int x, y;
29+
cin >> x >> y;
30+
cout << prefix_sum[x - 1] - prefix_sum[y - 1] << "\n";
31+
}
32+
return 0;
33+
}

04-240409/solution/F.cpp

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#include <bits/stdc++.h>
2+
#define X first
3+
#define Y second
4+
5+
using namespace std;
6+
7+
typedef long long ll;
8+
typedef long double ld;
9+
typedef pair<int, int> pi;
10+
typedef pair<pi, int> pii;
11+
typedef pair<pi, pi> pipi;
12+
13+
const int MAX = 1e6 + 7;
14+
const int MOD = 1e9 + 7;
15+
const int INF = 1e9 + 7;
16+
int dx[] = { -1, 1, 0, 0 };
17+
int dy[] = { 0, 0, -1, 1 };
18+
int N, M;
19+
int dp[10001][505];
20+
21+
int main (void)
22+
{
23+
ios_base::sync_with_stdio (false);
24+
cin.tie (NULL);
25+
cout.tie (NULL);
26+
27+
cin >> N >> M;
28+
vector<int> d(N, 0);
29+
for (int i = 0; i < N; i++) cin >> d[i];
30+
for (int i = 1; i <= N; i++)
31+
{
32+
dp[i][0] = dp[i - 1][0];
33+
for (int j = 1; j <= M && i - j > 0; j++)
34+
dp[i][0] = max (dp[i][0], dp[i - j][j]);
35+
for (int j = 1; j <= M && j <= i; j++)
36+
dp[i][j] = dp[i - 1][j - 1] + d[i - 1];
37+
}
38+
cout << dp[N][0] << "\n";
39+
return 0;
40+
}

04-240409/solution/G.cpp

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#include <iostream>
2+
#include <vector>
3+
4+
using namespace std;
5+
6+
int m, n;
7+
vector<vector<int>> edge;
8+
vector<bool> visited;
9+
int cnt=0;
10+
11+
void dfs(int node){
12+
visited[node] = true;
13+
for (auto it : edge[node])
14+
{
15+
if (!visited[it])
16+
{
17+
cnt++;
18+
dfs (it);
19+
}
20+
}
21+
}
22+
23+
int main() {
24+
ios_base::sync_with_stdio (false);
25+
cin.tie (NULL);
26+
cout.tie (NULL);
27+
28+
cin >> m;
29+
cin >> n;
30+
for(int i = 0; i <= m; i++){
31+
vector<int> tmp;
32+
edge.push_back(tmp);
33+
visited.push_back(false);
34+
}
35+
36+
for(int i = 0; i < n; i++){
37+
int u, v;
38+
cin >> u >> v;
39+
edge[u].push_back(v);
40+
edge[v].push_back(u);
41+
}
42+
dfs (1);
43+
cout << cnt << "\n";
44+
return 0;
45+
}

0 commit comments

Comments
 (0)