2-winner SPSV can be done without the KP transform

SPAV with the KP transform (SPSV) seems tricky to implement because the KP transform itself requires essentially keeping track of multiple parts of a ballot separately. Fortunately, in the 2-winner case, this isn’t necessary: after the first winner is seated, each fraction of the ballot will either be reweighted in the same way or remain at full weight. As an example, if a ballot is A:5 B:3, then after B is seated, all that needs to be done is check what score the ballot gave to B (3 out of 5), and then multiply that by 0.5 (the first divisor of the D’Hondt series, which I’ll use for this example), and subtract this from the ballot’s overall weight. This yields a remaining ballot weight of 70%, putting the voter’s score for A at 3.5 out of 5.
As a comparison to SPSV’s usual process, this score ballot would become 0.6 AB and 0.4 A Approval ballots; after B is seated, the 0.6 AB ballots are halved in weight to become 0.3 AB ballots, and when that is added to the 0.4 A ballots, it leaves 70% of the ballot (0.7 approvals) in favor of A.