「ABC 401-500/ABC403C - 403 Forbidden」の編集履歴(バックアップ)一覧はこちら
「ABC 401-500/ABC403C - 403 Forbidden」(2025/05/16 (金) 00:50:15) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
#contents
----
*問題
[[ABC403C>>https://atcoder.jp/contests/abc403/tasks/abc403_c]]
元ネタは、[[RFC9110で規定されるHTTPコード>>https://ja.wikipedia.org/wiki/HTTP%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89]]の[[403 Forbidden>https://ja.wikipedia.org/wiki/HTTP_403]]。
*必要知識
B以下レベルの内容は省略
-[[set]]
*考え方
単純にやると、N×Mのbool型二次元配列を用意することになるが、NやMの値が大きくてTLEしてしまう。
そこで、権限がないものについてはわざわざデータを用意せず、「権限があるという情報がなければ権限がないと判断する」という方針を取ることで高速化する。
権限があるものだけを管理するには、飛び飛びの値を管理するのが得意なmapやsetなどを用いるのがよい。
今回は同じ人に複数の権限が与えられる可能性があるので、mapでは難しい。
vector<set<int>>かset<pair<int,int>>を使うのがよい。
クエリ2で全体権限を与える場合に、個別ページ全部に権限を与えていくと、クエリ2を連打される最悪の入力に対してQ×Mの処理時間がかかってTLEする。
全体権限は全体権限として管理し、クエリ3のときに「個別ページ権限か全体権限があればOK」と判断する。
*解答例
[[解答例>>https://atcoder.jp/contests/abc403/submissions/65814151]]
*注意点
*別解
#contents
----
*問題
[[ABC403C>>https://atcoder.jp/contests/abc403/tasks/abc403_c]]
元ネタは、[[RFC9110で規定されるHTTPコード>>https://ja.wikipedia.org/wiki/HTTP%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89]]の[[403 Forbidden>https://ja.wikipedia.org/wiki/HTTP_403]]。
*必要知識
B以下レベルの内容は省略
-[[set]]
*考え方
単純にやると、N×Mのbool型二次元配列を用意することになるが、NやMの値が大きくてTLEしてしまう。
そこで、権限がないものについてはわざわざデータを用意せず、「権限があるという情報がなければ権限がないと判断する」という方針を取ることで高速化する。
権限があるものだけを管理するには、飛び飛びの値を管理するのが得意なmapやsetなどを用いるのがよい。
今回は同じ人に複数の権限が与えられる可能性があるので、mapでは難しい。
vector<set<int>>かset<pair<int,int>>を使うのがよい。
クエリ2で全体権限を与える場合に、個別ページ全部に権限を与えていくと、クエリ2を連打される最悪の入力に対してQ×Mの処理時間がかかってTLEする。
全体権限は全体権限として管理し、クエリ3のときに「個別ページ権限か全体権限があればOK」と判断する。
*解答例
vector<set>でやる場合 [[解答例>>https://atcoder.jp/contests/abc403/submissions/65814151]]
set<pair>でやる場合 [[解答例>>https://atcoder.jp/contests/abc403/submissions/65814280]]
*注意点
*別解
表示オプション
横に並べて表示:
変化行の前後のみ表示: