Skip to content

Commit 5f65657

Browse files
committed
[#13] Add abc204
1 parent ae37692 commit 5f65657

File tree

4 files changed

+123
-0
lines changed

4 files changed

+123
-0
lines changed

ABC_204_A.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#include <iostream>
2+
using namespace std;
3+
4+
int main() {
5+
int x, y;
6+
cin >> x >> y;
7+
8+
cout << (3 - (x + y) + 3) % 3 << endl;
9+
}

ABC_204_B.cpp

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#include <iostream>
2+
using namespace std;
3+
4+
int main() {
5+
int n;
6+
long long result = 0;
7+
cin >> n;
8+
9+
for (int i = 0; i < n; i++)
10+
{
11+
int a;
12+
cin >> a;
13+
14+
result += max(0, a - 10);
15+
}
16+
17+
cout << result << endl;
18+
}

ABC_204_C.cpp

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <queue>
4+
#include <cstring>
5+
using namespace std;
6+
7+
vector<int> edges[2001];
8+
long long res = 0;
9+
bool visited[2001];
10+
11+
void bfs(int start) {
12+
memset(visited, false, sizeof(visited));
13+
14+
queue<int> que;
15+
que.push(start);
16+
visited[start] = true;
17+
18+
while (!que.empty())
19+
{
20+
int node = que.front();
21+
que.pop();
22+
++res;
23+
24+
for (int i = 0; i < edges[node].size(); i++)
25+
{
26+
if (visited[edges[node][i]])
27+
{
28+
continue;
29+
}
30+
31+
que.push(edges[node][i]);
32+
visited[edges[node][i]] = true;
33+
}
34+
}
35+
}
36+
37+
int main() {
38+
int n, m;
39+
40+
cin >> n >> m;
41+
42+
for (int i = 0; i < m; i++)
43+
{
44+
int a, b;
45+
cin >> a >> b;
46+
edges[a].push_back(b);
47+
}
48+
49+
for (int i = 1; i <= n; i++)
50+
{
51+
bfs(i);
52+
}
53+
54+
cout << res << endl;
55+
}

ABC_204_D.cpp

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <cstring>
4+
using namespace std;
5+
6+
int n;
7+
int t[100];
8+
int oven[2];
9+
int dp[100000][100];
10+
11+
int go(int oven0, int oven1, int dishidx) {
12+
if (dishidx >= n)
13+
{
14+
return max(oven0, oven1);
15+
}
16+
if (dp[oven0][dishidx] != -1)
17+
{
18+
return dp[oven0][dishidx];
19+
}
20+
21+
// oven0
22+
int ret = 987654321;
23+
ret = min(ret, go(oven0 + t[dishidx], oven1, dishidx + 1));
24+
25+
// oven1
26+
ret = min(ret, go(oven0, oven1 + t[dishidx], dishidx + 1));
27+
28+
return dp[oven0][dishidx]= ret;
29+
}
30+
31+
int main() {
32+
cin >> n;
33+
34+
for (int i = 0; i < n; i++)
35+
{
36+
cin >> t[i];
37+
}
38+
39+
memset(dp, -1, sizeof(dp));
40+
cout << go(0, 0, 0) << endl;
41+
}

0 commit comments

Comments
 (0)