パフォーマンス:1928相当
レーティング:1805→1818 (+13) :)
#AtCoder #ABC483
atcoder.jp/users/mjtai/...
パフォーマンス:1928相当
レーティング:1805→1818 (+13) :)
#AtCoder #ABC483
atcoder.jp/users/mjtai/...
C セグ木
D 遅延セグ木
E unorderedじゃないとTLEした
F Bが大きいときしか考えてなくてTLE わからん
C セグ木
D 遅延セグ木
E unorderedじゃないとTLEした
F Bが大きいときしか考えてなくてTLE わからん
解説見ても全然ピンとこないなぁ…
解説見ても全然ピンとこないなぁ…
考え方: 用紙の枚数は、N に 1 を足して 2 で割り、切り捨てる
▶ YouTube で見る
https://youtu.be/LwiiNU_aag8
#AtCoder
考え方: 用紙の枚数は、N に 1 を足して 2 で割り、切り捨てる
▶ YouTube で見る
https://youtu.be/LwiiNU_aag8
#AtCoder
考え方: 票が動くのは辞退者の分だけ。受け取る人と、得票順の先頭だけを比べる
▶ YouTube で見る
https://youtu.be/Ap_roeucU9E
#AtCoder
考え方: 票が動くのは辞退者の分だけ。受け取る人と、得票順の先頭だけを比べる
▶ YouTube で見る
https://youtu.be/Ap_roeucU9E
#AtCoder
4完でした
A: ⌈N/2⌉
B: 配列で管理してシミュレーション
C: 各候補者について辞退した場合に票が移る先をリスト化。候補者と得票数のペアを順序付き集合で管理し、辞退する候補者に応じて差分更新
D: セグ木を用いて整数列の各区間に対し総和、累積最小値/最大値を求め、書き換え前後を取得
4完でした
A: ⌈N/2⌉
B: 配列で管理してシミュレーション
C: 各候補者について辞退した場合に票が移る先をリスト化。候補者と得票数のペアを順序付き集合で管理し、辞退する候補者に応じて差分更新
D: セグ木を用いて整数列の各区間に対し総和、累積最小値/最大値を求め、書き換え前後を取得
考え方: 上から K 枚を取り出して、逆順にして、符号を反転して、戻す。これを順番にくり返す
▶ YouTube で見る
https://youtu.be/MLEukrWqcbU
#AtCoder
考え方: 上から K 枚を取り出して、逆順にして、符号を反転して、戻す。これを順番にくり返す
▶ YouTube で見る
https://youtu.be/MLEukrWqcbU
#AtCoder
パフォーマンス:1194相当
レーティング:1204→1203 (-1) :(
#AtCoder #ABC483 atcoder.jp/users/doDayl...
あぶない
パフォーマンス:1194相当
レーティング:1204→1203 (-1) :(
#AtCoder #ABC483 atcoder.jp/users/doDayl...
あぶない
A問題は割り算切り上げテク
B問題はうまいテクが思いつかないので愚直
なんかバグって失速
C問題なんやねんこれ!!!!!
とりあえず全員第一希望に投票させてから、辞退した人の票の第二希望の票を増やして、最も多い票(←BTreeSetで無理やり管理)を取った人の番号(←Vec<BTreeSet>で無理やり管理)の最小値を求め、増やした表をもとに戻す
めっちゃバグらせまくった
D問題も簡単じゃない
符号を反転させるより前と後に分けて、それぞれの累積和の最大・最小値をどうにかする
SparseTableを持ち出してしまう
A問題は割り算切り上げテク
B問題はうまいテクが思いつかないので愚直
なんかバグって失速
C問題なんやねんこれ!!!!!
とりあえず全員第一希望に投票させてから、辞退した人の票の第二希望の票を増やして、最も多い票(←BTreeSetで無理やり管理)を取った人の番号(←Vec<BTreeSet>で無理やり管理)の最小値を求め、増やした表をもとに戻す
めっちゃバグらせまくった
D問題も簡単じゃない
符号を反転させるより前と後に分けて、それぞれの累積和の最大・最小値をどうにかする
SparseTableを持ち出してしまう
C map<第一候補: 第二候補の配列> を用意しておく。投票数はMしかないので、詰め直して入れ替わった人たちとトップだけ見ればよい。
実装凡ミスで地獄の苦しみ、最後1秒前提出に成功
D 累積和をとっておき、それをmax, minそれぞれのセグ木に入れる。すべてのAiについて、これを反転した時にどうなるか考える。例えばAiが正なら右側のminが2×Ai分だけ本来より小さくなる、という感じ
E アルファベットは26文字でMが6文字しかないので、たとえばM=6ならちょうど4/5/6文字一致しているペアは6!通り全てについて何かできそうと思ったが時間足りず。
C map<第一候補: 第二候補の配列> を用意しておく。投票数はMしかないので、詰め直して入れ替わった人たちとトップだけ見ればよい。
実装凡ミスで地獄の苦しみ、最後1秒前提出に成功
D 累積和をとっておき、それをmax, minそれぞれのセグ木に入れる。すべてのAiについて、これを反転した時にどうなるか考える。例えばAiが正なら右側のminが2×Ai分だけ本来より小さくなる、という感じ
E アルファベットは26文字でMが6文字しかないので、たとえばM=6ならちょうど4/5/6文字一致しているペアは6!通り全てについて何かできそうと思ったが時間足りず。
C セグ木使わないとめんどそうだったのでセグ木使った
D 「選ぶA[i]より前の移動でどの範囲を動いてどの位置に到着するか」「選ぶ値より後の移動でどの範囲を動くか」を前計算する。前計算結果を利用して、「選ぶA[i]」を全探索してそれぞれの場合の答えを求め、最大値を出力する。前計算が意外とめんどい。
E 「完全一致する組の個数」「ちょうど1文字だけ違う組の個数」「ちょうど2文字だけ違う組の個数」をそれぞれ求める。「ちょうど1文字だけ違う組の個数」「ちょうど2文字だけ違う組の個数」を求めるためには包除原理的なことをした。
C セグ木使わないとめんどそうだったのでセグ木使った
D 「選ぶA[i]より前の移動でどの範囲を動いてどの位置に到着するか」「選ぶ値より後の移動でどの範囲を動くか」を前計算する。前計算結果を利用して、「選ぶA[i]」を全探索してそれぞれの場合の答えを求め、最大値を出力する。前計算が意外とめんどい。
E 「完全一致する組の個数」「ちょうど1文字だけ違う組の個数」「ちょうど2文字だけ違う組の個数」をそれぞれ求める。「ちょうど1文字だけ違う組の個数」「ちょうど2文字だけ違う組の個数」を求めるためには包除原理的なことをした。
パフォーマンス:1106相当
レーティング:1793→1740 (-53) :(
#AtCoder #ABC483 atcoder.jp/users/kobosh...
パフォーマンス:1106相当
レーティング:1793→1740 (-53) :(
#AtCoder #ABC483 atcoder.jp/users/kobosh...
ABCDE(1) 5完 1ペナ 82:54
みんな均等30分
A: (N+1) / 2
B:StackとQueueを巧みに使う
C:普通に選挙をやったときの1位と2位、そして全候補者の第一候補の票を持っておく。候補者ごとにその候補者を第一候補とした投票者の第二候補を全部見る。それを1位と比較する。調べる候補者が1位なら2位と比較。
めんどくネ?
D:まずは何もせず0ターン目からNターン目までのそれぞれのこれまでの最左、最右地点を知っておく。また、このターンを基準として最大右にいくつ進めるか、左に進めるかも逆走で調べる。
(続く)
ABCDE(1) 5完 1ペナ 82:54
みんな均等30分
A: (N+1) / 2
B:StackとQueueを巧みに使う
C:普通に選挙をやったときの1位と2位、そして全候補者の第一候補の票を持っておく。候補者ごとにその候補者を第一候補とした投票者の第二候補を全部見る。それを1位と比較する。調べる候補者が1位なら2位と比較。
めんどくネ?
D:まずは何もせず0ターン目からNターン目までのそれぞれのこれまでの最左、最右地点を知っておく。また、このターンを基準として最大右にいくつ進めるか、左に進めるかも逆走で調べる。
(続く)