I hit 18:01 at my district race a week ago. I'm currently a junior. Here are my training stats since last year (my first year of XC - and any sport for that matter). TL;DR at bottom.
9th-10th grade summer: Around ~15-20 MPW of run/walking. Since I had never done any sort of running before I had to start at the basics; for the first month during my runs I would run for a minute or two then walk for a minute or two. I repeated for a couple of miles. Second month I spent less time walking and more time running. By early August I could do 3 miles in 22:40ish without stopping. I rarely ran two consecutive days in a row.
10th grade XC season: Typically we would have two interval workouts a week with a generous amount of easy runs (2-3 per week). Race Saturday, long run Sunday. My team was pretty undisciplined however (still is somewhat) and walked a lot during easy/medium distance runs. Sometimes I would skip the long run on Sunday. Still finished the season with a time of 20:57 for a 5K.
10th grade winter: Decided to take things more seriously. Did too many long runs that I wasn't prepared for and ended up skipping the easy runs. Did a couple tempo runs here and there. Average MPW was 25-30.
10th grade track: I focused on the 800m and 1600m (with the occasional 3200m) - had a boat load of interval workouts, strides and tempo runs. Sometimes workouts would be back-to-back, so long as we didn't feel sore or injured. Finished track with the best team times - 2:08 for my 4x800m split (first leg) and 4:56 for the 1600m. Also ran a 5K road race in 19:40.
10th-11th grade summer: By now I took my training completely seriously. I started off at 40 MPW, then bumped it up to 50 after a couple of weeks. Also got a job which required me to work long hours, which was tough. The combination of the two left me feeling almost completely burnt out at the end of the summer (consequently, my mileage went back down to 35-40), but I took it easy the week before the season/school officially started. P.S. If you're doing this type of mileage, might not be a bad idea to double it up some days. On some days I would, for instance, do a 6 mile bridge run in the morning (no hills - I'm in northeast florida) and then a 4-6 mile easy run in the afternoon. At the end of July I ran a 5K road race and got 19:10, which was disappointing because I was aiming for 18:30.
11th grade season: New coach, new training methods. Mondays were medium distance days, tuesday/wednesday were quality/workout days, thursdays were for either easy or medium distance depending on how we felt, friday was for easy, races saturday, long run sunday. On quality days, 800m/1600m intervals were common, and occasionally we did sprint workouts and progression runs. With that much base I could afford to focus on as much speedwork as I could. Strides nearly every day, if time allowed. I started the season with an abysmal 20:10, then gradually worked my way down. After the first couple of races I was content with my times, getting between ~18:45 and ~19:15. At districts I stuck with someone from one of the more elite schools and PR'd by 45 seconds, getting 18:01.
Hopefully you gained something from reading all of that.
TL;DR: high MPW before each season is absolutely essential to improving times. 40 MPW is a good starting point.