Skip to content

Commit bcc81f1

Browse files
kickstart
1 parent 9445cf8 commit bcc81f1

File tree

4 files changed

+253
-0
lines changed

4 files changed

+253
-0
lines changed

GoogleKickstart/2021/A1.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
using ll = long long;
6+
#define ii pair<int, int>
7+
#define f first
8+
#define s second
9+
#define pb push_back
10+
#define mp make_pair
11+
#define all(x) x.begin(), x.end()
12+
#define sz(x) (int)x.size()
13+
#define F0R(i, n) for (int i = 0; i < n; i++)
14+
#define FOR(i, a, b) for (int i = a; i < b; i++)
15+
#define inf 1000000010
16+
17+
int main() {
18+
cin.tie(0)->sync_with_stdio(0);
19+
20+
int t; cin >> t;
21+
int x = 1;
22+
while (t--) {
23+
int n, m; cin >> n >> m;
24+
string s; cin >> s;
25+
26+
for (int i = 0; i < n/2; i++) {
27+
if (s[i] != s[n-i-1]) {
28+
m--;
29+
}
30+
}
31+
cout << "Case #" << x << ": " << abs(m) << endl;
32+
x++;
33+
}
34+
35+
return 0;
36+
}

GoogleKickstart/2021/A2.cpp

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
using ll = long long;
6+
#define ii pair<int, int>
7+
#define f first
8+
#define s second
9+
#define pb push_back
10+
#define mp make_pair
11+
#define all(x) x.begin(), x.end()
12+
#define sz(x) (int)x.size()
13+
#define F0R(i, n) for (int i = 0; i < n; i++)
14+
#define FOR(i, a, b) for (int i = a; i < b; i++)
15+
#define inf 1000000010
16+
17+
int r, c;
18+
bool A[1000][1000];
19+
int maxLen[1000][1000][4];
20+
21+
int dx[4] = { -1, 0, 1, 0 };
22+
int dy[4] = { 0, -1, 0, 1 };
23+
int getLen(int i, int j, int dir) {
24+
if (i < 0 || i >= r || j < 0 || j >= c) return 0;
25+
if (maxLen[i][j][dir] != -1) return maxLen[i][j][dir];
26+
if (A[i][j] == 0) {
27+
return maxLen[i][j][dir] = 0;
28+
}
29+
return maxLen[i][j][dir] = 1 + getLen(i+dx[dir], j + dy[dir], dir);
30+
}
31+
32+
ll ans = 0;
33+
34+
void add(int a, int b) {
35+
ans += max(min(a, b/2)-1, 0);
36+
ans += max(min(b, a/2)-1, 0);
37+
}
38+
39+
void solve() {
40+
ans = 0;
41+
cin >> r >> c;
42+
F0R(i, r) F0R(j, c) cin >> A[i][j];
43+
44+
F0R(i, r) {
45+
F0R(j, c) {
46+
F0R(k, 4) {
47+
maxLen[i][j][k] = -1;
48+
}
49+
}
50+
}
51+
52+
F0R(i, r) {
53+
F0R(j, c) {
54+
F0R(k, 4) {
55+
maxLen[i][j][k] = getLen(i, j, k);
56+
}
57+
}
58+
}
59+
60+
F0R(i, r) {
61+
F0R(j, c) {
62+
int lenLeft = maxLen[i][j][1];
63+
int lenUp = maxLen[i][j][0];
64+
int lenRight = maxLen[i][j][3];
65+
int lenDown = maxLen[i][j][2];
66+
67+
add(lenLeft, lenUp);
68+
add(lenLeft, lenDown);
69+
add(lenRight, lenUp);
70+
add(lenRight, lenDown);
71+
}
72+
}
73+
cout << ans << endl;
74+
}
75+
76+
int main() {
77+
cin.tie(0)->sync_with_stdio(0);
78+
79+
int t; cin >> t;
80+
for (int tc = 1; tc <= t; tc++) {
81+
cout << "Case #" << tc << ": ";
82+
solve();
83+
}
84+
85+
return 0;
86+
}

GoogleKickstart/2021/A3.cpp

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
using ll = long long;
6+
#define ii pair<int, int>
7+
#define f first
8+
#define s second
9+
#define pb push_back
10+
#define mp make_pair
11+
#define all(x) x.begin(), x.end()
12+
#define sz(x) (int)x.size()
13+
#define F0R(i, n) for (int i = 0; i < n; i++)
14+
#define FOR(i, a, b) for (int i = a; i < b; i++)
15+
#define inf 1000000010
16+
17+
int r, c;
18+
int A[300][300];
19+
int B[300][300];
20+
21+
int dx[4] = { -1, 0, 1, 0 };
22+
int dy[4] = { 0, -1, 0, 1 };
23+
24+
void solve() {
25+
cin >> r >> c;
26+
F0R(i, r) F0R(j, c) cin >> A[i][j];
27+
F0R(i, r) F0R(j, c) B[i][j] = A[i][j];
28+
29+
priority_queue<pair<int, ii>> pq;
30+
F0R(i, r) F0R(j, c) pq.push(mp(A[i][j], mp(i, j)));
31+
32+
while (!pq.empty()) {
33+
pair<int, ii> u = pq.top(); pq.pop();
34+
if (u.f < A[u.s.f][u.s.s]) continue;
35+
36+
F0R(i, 4) {
37+
ii v = mp(u.s.f+dx[i], u.s.s+dy[i]);
38+
if (v.f < 0 || v.f >= r || v.s < 0 || v.s >= c) continue;
39+
if (A[v.f][v.s] < u.f-1) {
40+
A[v.f][v.s] = u.f-1;
41+
pq.push(mp(u.f-1, v));
42+
}
43+
}
44+
}
45+
46+
ll ans = 0;
47+
F0R(i, r) F0R(j, c) ans += A[i][j] - B[i][j];
48+
cout << ans << endl;
49+
}
50+
51+
int main() {
52+
cin.tie(0)->sync_with_stdio(0);
53+
54+
int t; cin >> t;
55+
for (int tc = 1; tc <= t; tc++) {
56+
cout << "Case #" << tc << ": ";
57+
solve();
58+
}
59+
60+
return 0;
61+
}

GoogleKickstart/2021/A4.cpp

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
using ll = long long;
6+
#define ii pair<int, int>
7+
#define f first
8+
#define s second
9+
#define pb push_back
10+
#define mp make_pair
11+
#define all(x) x.begin(), x.end()
12+
#define sz(x) (int)x.size()
13+
#define F0R(i, n) for (int i = 0; i < n; i++)
14+
#define FOR(i, a, b) for (int i = a; i < b; i++)
15+
#define inf 1000000010
16+
17+
int pa[1000];
18+
int sz[1000];
19+
int find(int x) { return pa[x] == x ? x : pa[x] = find(pa[x]); }
20+
void unite(int a, int b) {
21+
a = find(a), b = find(b);
22+
if (sz[a] < sz[b]) swap(a, b);
23+
pa[b] = a;
24+
sz[a] += sz[b];
25+
}
26+
27+
void solve() {
28+
int n; cin >> n;
29+
F0R(i, 2*n) {
30+
pa[i] = i;
31+
sz[i] = 1;
32+
}
33+
int A[n][n];
34+
F0R(i, n) F0R(j, n) cin >> A[i][j];
35+
int B[n][n];
36+
F0R(i, n) F0R(j, n) cin >> B[i][j];
37+
int R[n], C[n]; F0R(i, n) cin >> R[i]; F0R(i, n) cin >> C[i];
38+
39+
ll tot = 0;
40+
vector<pair<int, ii>> edges;
41+
F0R(i, n) {
42+
F0R(j, n) {
43+
if (A[i][j] == -1) {
44+
tot += B[i][j];
45+
edges.pb(mp(B[i][j], mp(i, n+j)));
46+
}
47+
}
48+
}
49+
sort(all(edges));
50+
reverse(all(edges));
51+
for (auto e : edges) {
52+
if (find(e.s.f) != find(e.s.s)) {
53+
unite(e.s.f, e.s.s);
54+
tot -= e.f;
55+
}
56+
}
57+
cout << tot << endl;
58+
}
59+
60+
int main() {
61+
cin.tie(0)->sync_with_stdio(0);
62+
63+
int t; cin >> t;
64+
for (int tc = 1; tc <= t; tc++) {
65+
cout << "Case #" << tc << ": ";
66+
solve();
67+
}
68+
69+
return 0;
70+
}

0 commit comments

Comments
 (0)