Skip to content

Commit 21c498b

Browse files
some stuff
1 parent 6be633d commit 21c498b

File tree

5 files changed

+331
-0
lines changed

5 files changed

+331
-0
lines changed

Codeforces/1552D.cpp

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
int A[100];
6+
int n;
7+
8+
int val = 0;
9+
int tgt = 0;
10+
bool good = false;
11+
void solve(int x) {
12+
if (val == A[tgt]) good = true;
13+
if (x == n) {
14+
return;
15+
}
16+
solve(x+1);
17+
if (tgt != x) {
18+
val += A[x];
19+
solve(x+1);
20+
val -= A[x];
21+
val -= A[x];
22+
solve(x+1);
23+
val += A[x];
24+
}
25+
}
26+
27+
int main() {
28+
int t; cin >> t;
29+
while (t--) {
30+
cin >> n;
31+
for (int i = 0; i < n; i++) {
32+
cin >> A[i];
33+
}
34+
good = false;
35+
for (int i = 0; i < n; i++) {
36+
val = 0;
37+
tgt = i;
38+
solve(0);
39+
}
40+
if (good) cout << "YES" << endl;
41+
else cout << "NO" << endl;
42+
}
43+
return 0;
44+
}

Codeforces/385B.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+
string s; cin >> s;
21+
22+
int ans = 0;
23+
int previousBearIndex = -1;
24+
for (int i = 0; i < (int)s.size() - 3; i++) {
25+
if (s.substr(i, 4) == "bear") {
26+
ans += (i - previousBearIndex)*(s.size() - 3 - i);
27+
previousBearIndex = i;
28+
}
29+
}
30+
31+
cout << ans << endl;
32+
33+
return 0;
34+
}
35+
36+
// Alt: two nested for loops and only check rightmost

FacebookHackerCup/2021R2A.cpp

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
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+
for (int tc = 1; tc <= t; tc++) {
22+
cout << "Case #" << tc << ": ";
23+
24+
int n, m; cin >> n >> m;
25+
map<int, int> unswappedModels;
26+
map<int, int> swappedModels;
27+
F0R(i, m) {
28+
int s; cin >> s;
29+
unswappedModels[s]++;
30+
}
31+
ll ans = 0;
32+
F0R(i, n) {
33+
map<int, int> reqs;
34+
F0R(j, m) {
35+
int x; cin >> x;
36+
reqs[x]++;
37+
}
38+
ans += m;
39+
40+
map<int, int> leftoverReqs;
41+
map<int, int> newUnswapped, newSwapped;
42+
for (ii y : reqs) {
43+
ii x = y;
44+
if (swappedModels[x.f] > 0) {
45+
x.s -= swappedModels[x.f];
46+
}
47+
if (x.s > 0) {
48+
if (unswappedModels[x.f] > 0) {
49+
int ct = min(unswappedModels[x.f], x.s);
50+
unswappedModels[x.f] -= ct;
51+
newUnswapped[x.f] += ct;
52+
x.s -= ct;
53+
}
54+
}
55+
ans -= y.s - max(x.s, 0);
56+
}
57+
for (ii x : unswappedModels) {
58+
ans -= x.s;
59+
}
60+
for (ii x : reqs) {
61+
int ct = x.s - newUnswapped[x.f];
62+
assert(ct >= 0);
63+
newSwapped[x.f] = ct;
64+
}
65+
swap(unswappedModels, newUnswapped);
66+
swap(swappedModels, newSwapped);
67+
}
68+
cout << ans << endl;
69+
}
70+
71+
return 0;
72+
}

FacebookHackerCup/2021R2B.cpp

+104
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
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+
vector<int> adj[800000];
18+
int par[800000][20];
19+
int depth[800000];
20+
int minDepth[800000];
21+
22+
void dfs(int u, int p, int d = 0) {
23+
depth[u] = d;
24+
minDepth[u] = d;
25+
par[u][0] = p;
26+
for (int v : adj[u]) {
27+
if (v != p) {
28+
dfs(v, u, d+1);
29+
}
30+
}
31+
}
32+
33+
void dfs2(int u, int p) {
34+
for (int v : adj[u]) {
35+
if (v != p) {
36+
dfs2(v, u);
37+
minDepth[u] = min(minDepth[u], minDepth[v]);
38+
}
39+
}
40+
}
41+
42+
int lca(int a, int b) {
43+
if (depth[a] < depth[b]) swap(a, b);
44+
for (int i = 19; ~i; i--) {
45+
if (depth[par[a][i]] >= depth[b]) {
46+
a = par[a][i];
47+
}
48+
}
49+
if (a == b) return a;
50+
for (int i = 19; ~i; i--) {
51+
if (par[a][i] != par[b][i]) {
52+
a = par[a][i];
53+
b = par[b][i];
54+
}
55+
}
56+
assert(par[a][0] == par[b][0]);
57+
return par[a][0];
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+
67+
int n; cin >> n;
68+
for (int i = 0; i < n; i++) adj[i].clear();
69+
for (int i = 0; i < n-1; i++) {
70+
int a, b; cin >> a >> b; --a; --b;
71+
adj[a].pb(b); adj[b].pb(a);
72+
}
73+
74+
dfs(0, 0);
75+
for (int d = 1; d < 20; d++) {
76+
for (int i = 0; i < n;i ++) {
77+
par[i][d] = par[par[i][d-1]][d-1];
78+
}
79+
}
80+
81+
map<int, vector<int>> freqs;
82+
for (int i = 0; i < n; i++) {
83+
int f; cin >> f; freqs[f].pb(i);
84+
}
85+
for (auto &x : freqs) {
86+
for (int i = 1; i < x.s.size(); i++) {
87+
int a = x.s[0], b = x.s[i];
88+
assert(a != b);
89+
int y = lca(a, b);
90+
minDepth[a] = min(minDepth[a], depth[y]);
91+
minDepth[b] = min(minDepth[b], depth[y]);
92+
}
93+
}
94+
dfs2(0, 0);
95+
96+
int ans = 0;
97+
for (int i = 1; i < n; i++) {
98+
if (minDepth[i] == depth[i]) ans++;
99+
}
100+
cout << ans << endl;
101+
}
102+
103+
return 0;
104+
}

FacebookHackerCup/2021R2C.cpp

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
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, k;
18+
vector<vector<bool>> blocked;
19+
20+
int solve() {
21+
vector<int> numCars(c, 0);
22+
for (int i = 0; i < c; i++) {
23+
for (int j = 0; j < k; j++) {
24+
numCars[i] += blocked[j][i];
25+
}
26+
}
27+
int best = 1e9;
28+
for (int moves = 0; moves < r; moves++) {
29+
int cur = moves;
30+
for (int i = 0;i < c; i++) {
31+
if (k+moves<r) numCars[i] += blocked[k+moves][i];
32+
if (k+moves<r&&blocked[k+moves][i]) {
33+
cur++;
34+
continue;
35+
}
36+
if (numCars[i] > k) {
37+
cur++;
38+
}
39+
}
40+
best = min(best, cur);
41+
}
42+
return best;
43+
}
44+
45+
int main() {
46+
cin.tie(0)->sync_with_stdio(0);
47+
48+
int t; cin >> t;
49+
for (int tc = 1; tc <= t; tc++) {
50+
cout << "Case #" << tc << ": ";
51+
52+
cin >> r >> c >> k; --k;
53+
blocked.assign(r, vector<bool>());
54+
for (int i = 0; i < r; i++) {
55+
blocked[i].assign(c, 0);
56+
}
57+
for (int i = 0; i < r; i++) {
58+
for (int j = 0; j < c; j++) {
59+
char c; cin >> c;
60+
blocked[i][j] = c == 'X';
61+
}
62+
}
63+
int best = solve();
64+
for (int i = 0; i < r/2; i++) {
65+
for (int j = 0; j < c; j++) {
66+
swap(blocked[i][j], blocked[r-1-i][j]);
67+
}
68+
}
69+
k = r-1-k;
70+
best = min(best, solve());
71+
cout << best << endl;
72+
}
73+
74+
return 0;
75+
}

0 commit comments

Comments
 (0)