Temat: Zamknięte hakowanie

Co gdyby wprowadzić zamknięte hackowanie? Np w takiej formie:
Tylko w zadaniach A/B. Oprócz rozwiązania zgłosić można K (K~3) testów. Zbiór testów na których są sprawdzane rozwiązania to zbiór testów jury + wszystkie testy zawodników, którzy dostają 10 na testach jury. Za uwalenie innych nie dostaje się bonusu.
Jeżeli ukryte subtaski są dobrze zdefiniowane, to testy zawodników wrzucamy do wszystkich grup testów, których warunki spełniają te testy. Jeżeli nie są dobrze zdefiniowane, to jaki jest ich sens?

Wydaje mi sie, że mogłoby to być ciekawe. Wyraźnie wzmocniłoby też jakość testów.

Potencjalne sprzeciwy:
- "Za dużo testów do puszczenia" - nie sądzę żeby było to problemem. Komputery są szybkie, ranking i tak jest 12h po końcu, a na A i B całkiem mało ludzi dostaje 10.
- "Ale ludzie będą uwalać unordered_mapę i haszowanie mod 1e9+7" - wg mnie testy uwalające takie "standardowe rzeczy" powinny być w oficjalnych, ale wiem że niektórzy uważają że jest to niemoralne.
>komputery są szybkie
Te na których sio stoi 😂, nie nie są
Imo dobry pomysł, ale jeszcze trzeba jakieś wymogi żeby nie było za dużo testów. Przykładowo, że wysyła się parę (program, counterexample) i counterexample jest dodawany iff program przejdzie na 10 a na nim nie. Wydaje mi się, że względnie często się zdarza, że wpadamy na heurę a potem wzór, a okazuje się po fakcie że ta heura też wchodzi (patrz 1A z tego i zeszłego roku).

Ale no, zasadniczy bottleneck to ziemniaczaństwo serwerów sio i z tym chyba nie ma co zrobić.

Swoją drogą jestem ciekaw czy kiedyś jakiś taki konkurs z online judgem będzie używał ai do weryfikacji poprawności nadsyłanych rozwiązań. Wydaje się, że jak się takiemu ludkowi powie szczegółowo zadanie dowód poprawności rozwiązania etc to powinien być w do całkiem dobry. Szczególnie na jakimś takim formacie gdzie jest mało uczestników i długo się czeka na wyniki tak jak na patyczkach. Może nawet można wtedy zrobić algorytmiczny konkurs z dowodami jak na OM?
Na ten moment myślę, że albo AI mogłoby nie zaakceptować poprawnego rozwiązania którego jury nie przewidziało, albo łatwo byłoby AI oszukać ze sprytną heurą :( Na przykład z tej edycji myślę że łatwo wymyślić heurę do 4B albo do macierzy 5B w którą AI uwierzy bo jest w obu trochę przpadkologii albo rozwiązań które prawie wyglądają na poprawne
Moje opinie na szybko (nie wiem, czy w przyszłym roku też będę w jury PA, ale może tak):
- pomysł jest fajny :)
- technicznie trzeba by naklepać to w SIO.
- na poziomie jury pojawiłaby się niepewność co robić, jak wzorcówka nie przejdzie któregoś z tych testów, np. na czasie. Wiem, że nie powinno to się zdarzyć, ale wciąż może.
- "za dużo testów" - szacując od góry, za zadanie KON 10 punktów wzięło około 400 osób. Pesymistycznie, jest to około 1200 testów (w praktyce dużo mniej), razy jakieś 500 submitów, nawet z limitem 1s (który KON miało) to daje jakiś tydzień pracy jednej sprawdzaczki (w praktyce więcej, bo jest narzut na scheduling). Obstawiam, że jednak dałbym K = 1, przynajmniej na początek, żeby zobaczyć, ile ludzi w praktyce by takie testy zgłaszało.
- do której paczki wchodzi - to jest praktyczny problem. W praktyce, jeśli definiujemy formalnie subtaski, to jako układacz testów czuję się w obowiązku wrzucić wszystkie special-case'y do wszystkich paczek. Zwłaszcza w dywizji B daje to niepożądany efekt, że za bugi polegające na nie łapaniu jakiegoś corner case'a tniemy do zera. A nie możemy opublikować definicji subtaska zawierającego "special case x = y = 0 znajduje się tylko w paczkach 7, 8, i 10", bo to super-hintowe.
Moglibyśmy definiować formalnie subtaski, ale nie publikować tych definicji (albo tylko część z nich).
- Jest też element dodatkowej pracy jury, że te limity na subtaski musielibyśmy formalnie wyspecyfikować (tzn. w jakimś kodzie, pewnie w weryfikatorze testów), i musiałby być jakiś system sprawdzający, czy przychodzący test spełnia te limity.

Ogólnie moim zdaniem to fajny pomysł, ale martwi mnie ilość pracy, którą trzeba by w niego włożyć.

Rozważyłbym też opcję super-taniego w przygotowaniu konkursu, gdzie w ogóle jury nie przygotowuje testów, tylko je crowd-source'ujemy w ten sposób :)
Z punktu widzenia zawodnika bardzo nie podobałoby mi się aby układanie testów miało zostać częścią konkursu i abym po zrobieniu wszystkich zadań nie mógł sobie dać spokoju tylko myśleć w tyle głowy "a może powinienem przygotować jakieś mocne testy aby poubijać innych". W tym roku faktycznie były dwie wtopy ze słabymi testami, ale historycznie chyba zdarzało się to bardzo rzadko. Rozleniwiałoby też jury i skutkowało tym, że oficjalne testy będą słabsze. Poza tym wyklucza łagodne ucinanie za bugi. Mi się wydaje, że ułożenie testów tak aby "za nieogarniecie x=0 w GRM" stracić coś w stylu 2 pkt miałoby sens, ale przecież nie będzie się definiować subtasku z takim warunkiem. Mogą być też pułapki których w ogóle nie powinno się definiować w treści bo jak się ją zdefiniuje to przestanie być pułapką.