Let voters register on election day
The solution is some variation of Instant Runoff Voting. Rather than casting a static vote, each voter ranks his or her preference (but still only gets one vote). If I choose a third-party candidate as my first choice and the final tally shows that candidate receiving less than 50 percent of the vote, that candidate would be eliminated and my vote would shift to my second choice.
In the end, the results are the same as if there were multiple runoff rounds of voting (hence the name "Instant Runoff Voting"). The result is that the candidate who wins has the support of the majority, and the will of the voters is most accurately expressed.
Now can we talk about the Electoral College? What a sham!