### PR_0202's blog

By PR_0202, history, 4 months ago,

Let's discuss the various approaches used to get the maximum points. :)

• +60

 » 4 months ago, # |   +10 Use dp approach
•  » » 4 months ago, # ^ |   +1 I agree, best approach
•  » » 4 months ago, # ^ |   +14 In A?
•  » » » 4 months ago, # ^ |   0 If you want
•  » » 4 months ago, # ^ |   +3 WasteOfTime
 » 4 months ago, # | ← Rev. 3 →   0 We used Alltheirmothers technique.
•  » » 4 months ago, # ^ |   +8 Can you explain what this technique is?
 » 4 months ago, # |   0 Reply your scores in this thread ≧◠‿◠≦
•  » » 4 months ago, # ^ | ← Rev. 2 →   +8 A : 30 B : 743841 C : 211486 D : 133020 E : 159604 F : 558019Total : 3244220
•  » » 4 months ago, # ^ | ← Rev. 3 →   +8 A:33 B:743829 C:193461 D:133020 E:1590866 F:470440Total:3131649
•  » » 4 months ago, # ^ |   +10 A: 33 B: 901197 C: 194206 D: 251751 E: 1596710 F: 558276Total: 3502173
•  » » 4 months ago, # ^ |   0 A:33 B:900580 C:124667 D:251751 E:1640110 F:276248Total: 3193389
•  » » 4 months ago, # ^ |   0 A:33 B:901059 C:141216 D:66363 E:1637258 F:48425Total: 2794354
•  » » 4 months ago, # ^ |   0 A-33 B-275518 C-282 D-45860 E-1637258 F -0 Total1958951
•  » » 4 months ago, # ^ |   0 A: 33 B: 743797 C :198398 D :126518 E : 1637258 F : 452267 Total : 3158271
 » 4 months ago, # | ← Rev. 2 →   +8 $>$ teammate tries int func(project a) { return (a.b * a.s) / a.d; } as a discriminant between projects$>$ teammate writes 220 line code sorting those projects by that discriminant$>$ teammate leaves$>$ "team" gets 3038681 points
 » 4 months ago, # |   +15 When will they unfreeze the scoreboard ╥﹏╥
 » 4 months ago, # |   +41 Why does it have to take so long to reveal the results? :(We repeatedly took the task with maximum "score upon completion" / "total hours needed to complete". Used some bipartite matching stuff to find earliest time we can start a task. This was good for 3.486434 million points.
•  » » 4 months ago, # ^ |   0 Do you mind explaining the bipartite matching part? We thought about it but got notwhere
•  » » » 4 months ago, # ^ |   0 We ignored mentoring except in easily solvable special cases, which makes it possible to use bipartite matching to figure out if you can do a job with a given set of people.
 » 4 months ago, # | ← Rev. 2 →   +96 Not sure if practice is broken, but my solution for D was few mins late https://twitter.com/FakePsyho/status/1496973852093685760/photo/1Edit: Posting pictures is hard, Got 2M on D in practice
•  » » 4 months ago, # ^ | ← Rev. 4 →   -33 Our story is also the same. No difference. Our total would have been ~3754630. Missed potential WFs. :/
•  » » » 4 months ago, # ^ |   +52 You're off by one zero ;)
•  » » » » 4 months ago, # ^ |   +23 Sorry. Definitely today is not a good day, to begin with. ;/
•  » » 4 months ago, # ^ |   +10 Nice! What is your solution doing? Is there something special in the test structure?
•  » » » 4 months ago, # ^ |   +40 No special structure. The trick was in mentoring.I believe D was designed in a way that's fully solvable with an extremely narrow path. Each contributor starts with a single skill, but some projects have 2 roles requiring the same skill. Most probably for some of those projects you only have 1 contributor with that starting skill so you have to train another one.If all of your people have single skill there two way of learning another skill: If you have 2 roles with the same skill and one of them is lvl 1, you need a mentor + any other contributor (and they will get lvl 1) If you have two lvl 1 roles with different skills, you can take those contributors and swap them: instead of getting (potentially) to level 2, they will become mentor to each other and learn a skill.
•  » » 4 months ago, # ^ |   +11 Impressive! Could you elaborate on how SA can be applied here?
•  » » » 4 months ago, # ^ |   +22 I didn't do SA, but my teammate (sullyper) did.You can do SA on the order of projects. This should work fairly well even if your "matching" (subproblem of finding contributors for specific project) is not fully deterministic. Alternatively, you could add a "seed" to each project that makes matching more reliable. Then, your state transition is either moving projects or changing seeds.His SA that ran for 4H got 3.1M (out of ~3.2M max). In my case (random order of projects), I got a score of 2M around once per 1000 runs, but each run took less than 0.1s.
 » 4 months ago, # | ← Rev. 2 →   +1 This was my first hashcode and I was overjoyed with our performance. Though we did greedy we managed to place ~1K globally (≧▽≦). Edit: Got around 2.4 Million with it
 » 4 months ago, # |   +8 What was your approach for F? Its name "Find great mentors" suggested that maybe you should prioritize mentoring somehow, but the obvious approach of greedily selecting people to increase their level or otherwise to select people with lots of skills only got around 250K. How do you get to 500K+?
•  » » 4 months ago, # ^ |   +5 We got 770k+ on F (on practice) greedily selecting the project which maximizes $\frac{score}{timestamp_{completed} \cdot r}$.
•  » » 4 months ago, # ^ |   +5 Priorotizing people with low skill levels got us to 600k
 » 4 months ago, # |   0 Weren't they supposed to announce the finalists by now? Did anyone hear anything from them?
•  » » 4 months ago, # ^ |   0 The scoreboard is now finalized according to the competition platform, so they should notify qualified and waitlist teams in the upcoming days.
 » 4 months ago, # |   +8 Score distribution of qualifier roundScore distribution of subtasks and previous years here. Source files and code here.
»
4 months ago, # |
Rev. 3   +8

I made a GitHub repository of solutions scoring more than 5.7M in total (at the moment I write this message)

Input Score at end of contest Score after contest
A — An example 33 33
B — Better start small 897157 1003496
C — Collaboration 228971 242898
D — Dense schedule 251751 2178519
E — Exceptional skills 1640416 1648976
F — Find great mentors 635791 866644
Total 3654119 5940566
Rank 31st 1st
•  » » 4 months ago, # ^ |   0 So impressive, well done !