sjsakib / cfviz

Visualizes user data from codeforces.com using the official API
http://cfviz.netlify.com
1.12k stars 71 forks source link

Reducing multiple counting #28 #32

Closed maskmanlucifer closed 3 years ago

maskmanlucifer commented 3 years ago

This is how reduced multiple counting.

Research part -- 1) 90% of the (Div-1 and Div-2) which happen same day but separately have consecutive contest ID.

Why there was multiple counting -- 1) As of now the unique Id assigned to a problem is (contestID + index of problem). This approach of unique index is not that accurate because let's say you have same problem on same day in Div-1 and Div-2 separately at index (A and C) then they will be considered different problems (1334-A , 1335-C). This is why there was a problem of multiple counting.

How i solved it -- 1) I created unique id of problem as (contestID + problemname + rating of problem). Now for each problem we have two scenario. i) Current problem is Div-1 A and we have already solved Div-2 C here both Div-1 and Div-2 round will have same name and rating of the problem so i am checking if in just next contest we have solved a problem of same name and same rating and doing rest of updates. ii) Same for the case if current problem is Div-2 C then i am checking previous contest.

How much new code affects accuracy -- 1) Number of unsolved problem might reduce bcoz you might have 3 WA in Div-1 A but 1 AC in Div-2 C. 2) Max AC of any problem will now to sum of AC of both Div-1 A and Div-2 C. 3) Rating wise count of some problem might be reduced bcoz now we will count only one between (Div-1 A and Div-2 C). 4) Solved with one submission might reduce bcoz may be i have AC in one go in Div-1 A but i have already have 20 WA in Div-2 C.

maskmanlucifer commented 3 years ago

Sakib please review changes, say if i have to change anything.

sjsakib commented 3 years ago

Looks good! Nice work. Thanks for your contribution

ps-19 commented 3 years ago

Hi @sjsakib, Great to see you @maskmanlucifer sir here. Really Great Solution. But still their is an issue. https://github.com/sjsakib/cfviz/issues/6

If question matches then, whichever you solve first is counted in your submission. If you solve Div-1 A not Div-2 C count of A will be increased, after this PR C's count won't increase as is was previously (really great solution by @maskmanlucifer ).

But still A(and others) does not defines rating range of any problem, it could be 1800 Div-A or 1100 Div-2 A or 800 Div-3 A. If question matches greedily you could increase count of C instead of A.

Solution: Just Define rating range for all alphabet A(800-1200) and others. Owing to rating range of problem increase the count.

maskmanlucifer commented 3 years ago

Hi @sjsakib, Great to see you @maskmanlucifer sir here. Really Great Solution. But still their is an issue. #6

If question matches then, whichever you solve first is counted in your submission. If you solve Div-1 A not Div-2 C count of A will be increased, after this PR C's count won't increase as is was previously (really great solution by @maskmanlucifer ).

But still A(and others) does not defines rating range of any problem, it could be 1800 Div-A or 1100 Div-2 A or 800 Div-3 A. If question matches greedily you could increase count of C instead of A.

Solution: Just Define rating range for all alphabet A(800-1200) and others. Owing to rating range of problem increase the count.

I think the correct measurement for any problem should be problem rating not (A,B,B1,B2) type something. With this pull request i was only meant to solve redundant counting problem and i didn't wanted to make any front end change so i just left things as it is and did my job only in backend (Redundant counting).