Here's a link to a video of the Olympic Marathon course in Sapporo that I helped design (and measure).
The course has basically three segments:
1. Almost 2 loops around Odori Park (approximately 3.7 km). Very flat
2. Lower loop that the athletes only run once. From 3.7 km to approximately 12.7 km. This part of the course has the only hills (inclines). Two of them are just short bridges crossing the river. The other is about a 400m climb with only a 10 m elevation change. This part of the course (approx. 8.5 km - about 11 km) includes a 2500 section of a straight & gently downhill.
3. Upper loops. These are listed as 10k loops but actually around 9950m. That's why you will see that the km points on this loop are not in the same place - they are offset by approximately 50 m per lap. The last loop is also about 400 meters less then the first two to account for the fact that the finish line is prior to starting the loop. The 10k loop is basically flat with some long stretches. But the course gets interesting going through the campus of Hokkaido University with several turns.
https://olympics.com/tokyo-2020/en/news/videos/olympic-marathon-race-course-video