*
denotes tricky problems
Day | Tags | Memo |
---|---|---|
25 | implementation | |
24 | hexagon, simulation | See 2017 day 11 |
23* | simulation, table | part2: use hash table to implement circular linked list |
22 | simulation, deque | |
21 | set | |
20* | implementation | borders are unique; monsters won't overlap |
19* | dfs, grammar | part2: brute force rules |
18 | expression, stack | Shunting yard algorithm |
17 | simulation | |
16 | implementation, set | |
15 | simulation | |
14 | implementation | |
13 | math, chinese remainder theorem | implement crt |
12 | implementation | turning degrees are multiples of 90 |
11 | simulation | |
10 | implementation, sort, counter, dp | |
9 | implementation, prefix sum, bisect | |
8 | simulation, brute force | |
7 | regex, graph, dfs | |
6 | implementation, set | |
5 | implementation | |
4 | implementation, regex | |
3 | implementation | |
2 | implementation | |
1 | two pointers |
Day | Tags | Memo |
---|---|---|
25 | simulation, dfs, interactive, brute force | solve day 9 first; the map is a tree not a grid |
24 | simulation | |
23 | simulation | solve day 9 first |
22* | matrix, modint, bigint | implement matrix, modint |
21* | simulation, brute force | solve day 9 first; only needs an additional "H"; slow |
20 | parsing, bfs | labels are read either left-to-right or top-to-bottom; part2: compress states by building graph |
19 | simulation, brute force | solve day 9 first |
18* | bfs, bitmask | part1: same problem on leetcode; part2: compress states by skipping empty cells; slow |
17 | simulation, dfs, brute force, rle | solve day 9 first |
16* | simulation, suffix sum | part2: the offset is guaranteed at second half |
15* | simulation, backtracking, bfs | solve day 9 first; get a map first |
14 | graph, topological sorting, bisect | |
13 | simulation | solve day 9 first |
12 | simulation, period | part2: find peroid for each axis independently |
11 | simulation | solve day 9 first |
10 | math, simulation | |
9 | implementation | solve day 5 first |
8 | implementation | |
7 | simulation, permutation | solve day 5 first |
6 | tree, dfs | |
5 | simulation | solve day 2 first |
4 | brute force | |
3 | simulation, hash | |
2 | implementation, brute force | |
1 | implementation |
Day | Tags | Memo |
---|---|---|
25 | disjoint set | |
24 | simulation | look out for draw states that would make combats unable to proceed |
23* | graph, clique, bisect | add a new bot at the origin, and find the shortest range of it that would make it into a largest clique |
22 | implementation, bfs | |
21 | reverse engineering, period | solve day 19 first |
20* | dfs, bfs | regex implementation |
19 | simulation, reverse engineering | sum of divisors |
18 | simulation, grid, period | |
17* | simulation, dfs | |
16 | backtracking, simulation | |
15* | simulation, bfs | if a unit could not find a living oppenent in its turn, the round is incomplete and not counted for |
14 | simulation | |
13 | simulation | |
12 | simulation, period | |
11 | implementation, grid, integral image, brute force | |
10 | simulation | run simulation until the bounding box of points is small enough |
9 | simulation, linked list | |
8 | dfs | |
7 | graph, topological sorting, priority queue | |
6 | grid, flood fill | |
5 | string, simulation, stack, brute force | |
4 | implementation | |
3 | grid | implement Imos |
2 | implementation, string | |
1 | implementation, hash |
Day | Tags | Memo |
---|---|---|
25 | simulation, parsing | |
24 | dfs | |
23 | simulation, reverse engineering | part2: check prime |
22 | simulation, hash | |
21 | simulation | Glider |
20 | simulation, math | part2: settles under 50 secs |
19 | simulation | |
18 | simulation, coroutine | |
17 | simulation | |
16 | simulation, period | |
15 | implementation, brute force | |
14 | implementation, flood fill | solve day 10 first |
13 | math, brute force | similar to 2016 day 15 |
12 | graph, disjoint set | implement Disjoint-set/Union-find |
11 | math | Hexagonal Grids |
10 | string, implementation | |
9 | string, parsing | |
8 | simulation | |
7 | graph, dfs | nodes with two subtrees are always balanced |
6 | simulation, hash | |
5 | simulation | |
4 | string, implementation | |
3 | math, simulation | |
2 | implementation, brute force | |
1 | string, implementation |
Day | Tags | Memo |
---|---|---|
25 | simulation, vm, brute force, reverse engineering | integer in binary: reverse engineered |
24 | grid, bfs | |
23 | simulation, vm, reverse engineering | part2: factorial |
22* | grid, bfs | part2: move only the empty node and the target node |
21 | string, simulation, brute force, permutation | |
20 | simulation | |
19 | math, simulation | implement OrderedList |
18 | string, implementation | |
17 | bfs, brute force | |
16 | string, implementation | |
15 | math, brute force | |
14 | string, sliding window | |
13 | bfs | |
12 | simulation, vm, reverse engineering | reverse engineered |
11* | bfs | items with same types are equivalent, count number of items for each type only |
10 | simulation | |
9 | string, simulation, dfs | |
8 | simulation, grid | |
7 | string, implementation | |
6 | implementation | |
5 | brute force, implementation | |
4 | implementation | |
3 | math | |
2 | simulation | |
1 | simulation |
Day | Tags | Memo |
---|---|---|
25 | math, fastExp | |
24 | brute force, dfs | |
23 | simulation, vm, reverse engineering | Collatz conjecture |
22 | simulation, bfs | |
21 | brute force, math | |
20 | math | |
19* | dfs | part2: reduce target string from back to front using reversed rules |
18 | simulation, grid | |
17 | brute force, bitops | |
16 | brute force | |
15 | dfs, brute force | |
14 | math, simulation | |
13 | brute force, permutation | |
12 | dfs | |
11 | string, brute force | |
10 | simulation | |
9 | graph, brute force, permutation | |
8 | string | |
7 | dfs, memoization | |
6 | simulation, grid | |
5 | string, regex | |
4 | brute force, implementation | |
3 | simulation | |
2 | math | |
1 | stack |