yosupo06 / library-checker-problems

The problem data (Test case generator, judge's solution, task, ...) of Library Checker
https://judge.yosupo.jp/
Apache License 2.0
518 stars 117 forks source link

部分点システム #78

Open yosupo06 opened 5 years ago

yosupo06 commented 5 years ago

77 のように、計算量によって実装量が数倍変わるような問題が存在する、こういうのをどうするか?

よってこのジャッジとしては大きいほうと小さいほう両方をチェックできる仕組みを導入したい

そこで現状考えているのは2つで、

問題を2種類作る Pros:

Cons:

問題に部分点を導入する Pros:

Cons:

hos-lyric commented 5 years ago

とりあえずは,テストケース名から小さいデータで通っていること (やその実行時間) がわかれば満足かなという気持ちでいました

yosupo06 commented 5 years ago

確かに、現状では優先度低そうで大丈夫ですね

yosupo06 commented 4 years ago

必要そうな問題が溜まってきたんで、真面目に考えます

yosupo06 commented 4 years ago

ドラフト(随時更新)

変数名とか深く考えていません

要件リスト

満たしたい条件が多すぎる(素朴)

library-checker-problems

部分点っぽいものを導入

info.tomlに

[[subtasks]]
    name = "default"
    case = ['example_00.in', 'small_*.in']
[[subtasks]]
    name = "big"
    case = ['example_*.in', 'small_*.in', 'random_*.in']

みたいになんらかのケースの集合を指定する。subtaskには順序関係を定義するのが自然(=dictではなくarray)で、基本的には制約のサイズ順とする(=defaultが一番上とは限らない, 上に追加したり下に追加したりする)

judge.yosupo.jp

(問題, 部分点)ごとに一意なURLか何かを与えないと不都合が生まれないか?

yosupo06 commented 4 years ago

少なくとも

これは満たすようにするので、現状制約をどうするかで悩んでいる問題は一番自然な制約で作ってしまうことにします

kmyk commented 4 years ago

部分点ごとに一意な URL はかなりほしいです。library-checker-problems を競プロライブラリの CI から利用することを考えたとき、どの部分点のものを使うのかの指定が簡単だとうれしいので

yosupo06 commented 4 years ago

部分点の表示の仕方として、

の2種類があると思っています。で、今のところ前者で行きたいと思ってます。全体的に「問題を2種類作る」より「問題に部分点を導入する」の方向性で進めたいと思っているからです。

部分点ごとに一意な URL はかなりほしいです。library-checker-problems を競プロライブラリの CI から利用することを考えたとき、どの部分点のものを使うのかの指定が簡単だとうれしいので

これが問題で、前者の形式を採用すると部分点ごとにURLを与えにくいです。

なので現状の案としては

問題概要

aplusbを求めてください

制約(default)
- 0 <= A, B <= 1e9
- oj用タグ: https://judge.yosupo.jp/problems/aplusb#default (押すと←がクリップボードにコピーされるボタン)

制約(small)
- 0 <= A, B <= 100
- oj用タグ: [https://judge.yosupo.jp/problems/aplusb#small] (同上)

のようにURLアンカー(正式名称知らず)や、aplusb?subtask=smallのように(特に何にも使わない)GETパラメーターなどで区別することを考えています。