Skip to content

Commit 34cba6b

Browse files
committed
various golf's
1 parent d07ad8b commit 34cba6b

10 files changed

Lines changed: 14 additions & 28 deletions

File tree

library/loops/chooses.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
//! @time O(n choose k)
66
//! @space O(1)
77
for (int mask = (1 << k) - 1; mask < (1 << n);
8-
mask = next_subset(mask))
8+
mask = next_subset(mask))

library/loops/submasks.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
//! of every mask of size n
66
//! @space O(1)
77
for (int submask = mask; submask;
8-
submask = (submask - 1) & mask)
8+
submask = (submask - 1) & mask)

library/loops/supermasks.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
//! of every mask of size n
77
//! @space O(1)
88
for (int supermask = mask; supermask < (1 << n);
9-
supermask = (supermask + 1) | mask)
9+
supermask = (supermask + 1) | mask)

library/math/matrix_related/solve_linear_mod.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@ struct solve_linear_mod {
1818
rep(i, 0, n) mat[i].push_back(rhs[i]);
1919
tie(rank, det) = row_reduce(mat, m);
2020
if (any_of(rank + all(mat),
21-
[](vi& v) { return v.back(); })) {
21+
[](vi& v) { return v.back(); }))
2222
return;
23-
}
2423
sol.resize(m);
2524
int j = 0;
2625
for_each(begin(mat), begin(mat) + rank, [&](vi& v) {

library/trees/centroid_decomp.hpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,7 @@ void centroid(auto& g, auto f) {
2222
w = u, u = *big_ch;
2323
}
2424
f(u, p);
25-
for (int v : g[u]) {
26-
iter_swap(ranges::find(g[v], u), rbegin(g[v]));
27-
g[v].pop_back();
28-
dfs(dfs, v, u);
29-
}
25+
for (int v : g[u]) erase(g[v], u), dfs(dfs, v, u);
3026
};
3127
dfs(dfs, 0, -1);
3228
}

library/trees/edge_cd.hpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,16 @@ template<class G> void edge_cd(vector<G>& g, auto f) {
2424
if (c != -1) return c;
2525
siz[u] += siz[v];
2626
}
27-
return 2 * siz[u] > m
28-
? p >= 0 && (siz[p] = m + 1 - siz[u]),
29-
u : -1;
27+
return 2 * siz[u] > m ? siz[p] = m + 1 - siz[u],
28+
u : -1;
3029
};
3130
auto dfs = [&](auto&& dfs, int u, int m) -> void {
3231
if (m < 2) return;
33-
u = cent(cent, u, -1, m);
32+
u = cent(cent, u, u, m);
3433
int sum = 0;
3534
auto it = partition(all(g[u]), [&](int v) {
3635
ll x = sum + siz[v];
37-
return x * x < m * (m - x) ? sum += siz[v], 1 : 0;
36+
return x * x < m * (m - x) ? sum = x : 0;
3837
});
3938
f(u, it - begin(g[u]));
4039
G oth(it, end(g[u]));

library/trees/hld.hpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ template<bool VALS_EDGES> struct HLD {
1616
HLD(auto& g): n(sz(g)), p(n), siz(n, 1), rt(n), tin(n) {
1717
auto dfs1 = [&](auto&& dfs1, int u) -> void {
1818
for (int& v : g[u]) {
19-
iter_swap(ranges::find(g[v], u), rbegin(g[v]));
20-
g[v].pop_back();
21-
p[v] = u;
19+
erase(g[v], p[v] = u);
2220
dfs1(dfs1, v);
2321
siz[u] += siz[v];
2422
if (siz[v] > siz[g[u][0]]) swap(v, g[u][0]);

library/trees/shallowest_decomp_tree.hpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ void shallowest(auto& g, auto f) {
2424
for (const vi& vec : order | views::reverse)
2525
for (int u : vec) {
2626
f(u);
27-
for (int v : g[u])
28-
iter_swap(ranges::find(g[v], u), rbegin(g[v])),
29-
g[v].pop_back();
27+
for (int v : g[u]) erase(g[v], u);
3028
}
3129
}

tests/library_checker_aizu_tests/trees/edge_cd_reroot_dp.test.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,12 @@ int main() {
8181
dfs(dfs, adj[cent][i], cent, {b[e_id], c[e_id]},
8282
{b[e_id], c[e_id]}, i < split);
8383
}
84-
for (int side = 0; side < 2; side++) {
85-
for (
86-
auto [u, curr_b, curr_c] : all_backwards[side]) {
84+
for (int side = 0; side < 2; side++)
85+
for (auto [u, curr_b, curr_c] : all_backwards[side])
8786
res[u] =
8887
(res[u] + 1LL * curr_b * sum_forward[!side] +
8988
1LL * curr_c * cnt_nodes[!side]) %
9089
mod;
91-
}
92-
}
9390
});
9491
swap(base_adj, adj);
9592
{

tests/library_checker_aizu_tests/trees/shallowest_lib_checker_tree_path_composite.test.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,9 @@ int main() {
5959
for (int i = 0; i < ssize(adj[v]); i++) {
6060
int u = adj[v][i];
6161
line curr_line = weight[v][i];
62-
if (u != p) {
62+
if (u != p)
6363
self(self, u, v, compose(downwards, curr_line),
6464
compose(curr_line, upwards), forwards);
65-
}
6665
}
6766
};
6867
for (int i = 0; i < ssize(adj[cent]); i++) {

0 commit comments

Comments
 (0)