Sequential Monroe Voting can be counted by keeping track of how many voters give a candidate a particular score. This post will assume a scale of 0 to 5.
A candidate’s quota is filled with the voters that gave them the highest scores, so all you need to do to find their quota score is look at the number of voters who gave them a 5, and if this isn’t a quota of voters, then now count the number of voters who scored the candidate a 5 or a 4, and repeat. Once you’ve found the scores given by the candidate’s quota of voters, you can add up these voters’ points to find the candidate’s quota score.
After the reweighting in the first round, there are at most 5 additional possibilities for how voters can score the candidates (if using fractional reweighting). This is because every voter who scored the first round’s winner a 5 will have all of their ballots reweighted by the same amount, with the same applying to all 5 of the positive integer scores between 0 and 5.
This idea only requires two passes of all of the ballots per round: one to find the “score matrix” for the round, the second to isolate the ballots in the winner’s quota. To reference my negative counting idea for SPAV, it’s possible to, between rounds, only keep track of the changes in scores for ballots that were reweighted. In other words, if you have the score matrix for the first round, and you’re told that 5 voters are no longer giving a particular candidate a 4, with 3 of them now giving the candidate a 2.8 and the other 2 now giving the candidate a 0, then you can use this information to figure out the second round’s matrix for that candidate.
As a bonus, this scheme allows you to find the candidate’s overall scores in each round as well, which not only offers additional information, but is useful for implementing the Pareto-compliant tiebreaker.
The reason this is a Bucklin-style approach is because Bucklin can be counted by looking at the number of voters who ranked a candidate 1st, the number of voters who ranked them 2nd, etc.