pitsuの精進日記

精進の様子を垂れ流しています

今日の精進 2020/06/03

Educational Codeforces Round 57バチャ

ABCDの4完

A:l,l*2を出力

B:左端、右端の連続アルファベットだけに注目

同じなら(左の連続数+1)*(右の連続数+1)

異なるなら(左の連続数+1)+(右の連続数+1)-1

右と左どこで区切るかみたいなことを考えると数え上げしやすかった

C:式とか図をいじいじしたら正n角形は180/n *(1,2,....,n-2)の角度を作れることがわかったので全探索

n = 180のときに178度まで存在してて179度はn = 360のときにできるらしいので計算量大丈夫

D:名前出したら警察がくるDP

dp[i][4]で0は何も持ってない、1はh持ち、2はha持ち、3はhar持ちのイメージで遷移

https://codeforces.com/contest/1096

 

 

青~黄diffバチャ

1完

A:joeチャンネルで出た問題だったので解法覚えてた

式変形するとS[r] - r*K >= S[l] - l*Kを満たすペアの数を探せばよくて

set使って座圧した後にBITを使って条件満たすものを数え上げる

https://kenkoooo.com/atcoder/#/contest/show/e749c884-d16b-482a-a603-5e9df223a3b8

 

 

復習

最小値がmidを上回ってるかどうかで二分探索

highがokライン、lowがngライン

midがokならok側の領域を減らしたいのでok=mid

上回ってるなら移動できる

確認はBFSで移動していけば大丈夫

atcoder.jp

今日の精進 2020/06/02

A:これ計算量大丈夫なのか....sqrt(10^15)....大丈夫やんけ

kが10^9でも約数がそんなにあるものないやんけ....はぁ....

B:aを全部やってbを全部やって余ったものをcで小さいものから

使っていく

c:左から使える範囲をposで求めていって右から使える範囲をposで求めていって左で使えるまで使ったとき右でどれだけ使えるかを二分探索していく

bより大きいサイズが来たときやばい(3WA+1時間吸われた)

 

 

青diffバチャ

ABの2完

A:こういうのはとりあえず折れ線で考える

a-bが負になるやつは状態を下げれるから先に使いたいよね

なので先にこいつら使う

使う順番は最大値が大きくならないようにしたいからaが小さいものを優先して使う

a = bはa-b使い切った後に使うのが一番よさそう(他の場所渋くない?

a-bが正になるやつの処理困った

最終地点考えたとき最後に使うやつは上に飛び出てほしくない

なのでbが大きいやつを先に使うか~~

->AC

a-bが正になるやつの処理雑すぎたので解説ちゃんと読む

B:各地点iでセグ木で最大値を左側、右側で調べて二分探索

二分探索でj番目とiの間の最大値はh[i]であればその場所はokダメならngにしてやる(めぐる式

https://kenkoooo.com/atcoder/#/contest/show/9819ad78-8f0d-4490-986f-0b12d6a96e9d

 

 

さっきのバチャの復習

僕が考えたこと

今見てる地点のものが最初に出せないならそれ以降のやつも絶対最初に出せない

なのでそれ以前のうちどれか一つを出さなきゃいけない

それまで見てたものの個数を掛け合わせる(以前に引いたものがあったらそれはカウントしない)

添え字で頭崩壊(悲しい

この記事が僕のやりたいことをきれいに実装しててよかった

https://tiramistercp.hatenablog.com/entry/mujin2017-a

atcoder.jp

今日の精進 2020/06/01

昨日のF

一か所から伸びる遷移は3本あって

1.部分集合に含めない

2.部分集合に含めるけど足さない

3.部分集合に含めるし足す

一つ目と二つ目はstartとgoalが一緒だからdp[i+1][j] += dp[i][j]*2でいいのか

atcoder.jp

 

 

HCPC個人戦バチャ

Aの1完....

A:スタート地点からいけるBFSで自分の位置より一番低いところに行くようにする

https://kenkoooo.com/atcoder/#/contest/show/3bfedc78-18e0-4104-bc02-01c2d7a8097a

 

 

さっきのバチャのB

どっちで終わるか判定して各コマを除いたときゲームは終了しているか全探索

atcoder.jp

 

 

青~黄diffバチャ

Aの1完

A:dp[i][m][bit]で

i番目まで

最後に見た種類はm種類目

今まで見たものはbitが立ってるもの

https://kenkoooo.com/atcoder/#/contest/show/a5a42f33-d776-4588-8c57-03aa6faa9887

 

 

復習

頂点を二部グラフに分けたとき、塗った結果は一意に定まる

2部グラフに分けた後に、間にある辺は全部塗っても奇数長の閉路はできない

なので絶対間の辺はオレンジに塗る

間の辺を繋げても連結になってないものは同じグループ内の辺を繋げても閉路は絶対できない

なので塗らなきゃいけなくなって二部グラフ崩壊

だから頂点を二部グラフに分けたときに連結になってるものを数え上げて最後に/2

atcoder.jp

 

 

これはNim数に帰着できるらしい

この記事がわかりやすかった

https://www.creativ.xyz/grundy-number-1065/

atcoder.jp

今日の精進 2020/05/31

ABC169

ACDの3完(笑)

https://atcoder.jp/contests/abc169

A: A*Bを出力

C: long doubleでA,Bを入力してA*Bをlong long型に入れて出力

D: Nを割り切れるものを全探索して割り切れるだけ割った後にk*(k+1)/2<=(割れる回数)kの最大値を足してく

 

 

Codeforces Round #646 (Div. 2)

ABCの3完

A: 無限場合分け

B: iより左は0(1)右は1(0)みたいにO(n^2)

C: xの次数が1だったら先行勝ち、違ったら(N-2)%2が1なら先行勝ち

https://codeforces.com/contest/1363

今日の精進 2020/05/29

 

 

昨日えでゅふぉD(Hackで落ちたので)

https://codeforces.com/contest/1359/problem/D

 

 

青diffバチャ

1完

うーーーーん

https://kenkoooo.com/atcoder/#/contest/show/2cc10eaa-2759-4174-b7f7-422e77a9b202

 

 

復習

atcoder.jp

今日の精進 2020/05/28

HCPCランダムチーム戦バチャ

AEFを担当

https://onlinejudge.u-aizu.ac.jp/beta/room.html#HCPC200528/problems

 

 

担当外の問題

https://onlinejudge.u-aizu.ac.jp/beta/room.html#HCPC200528/problems/B

https://onlinejudge.u-aizu.ac.jp/beta/room.html#HCPC200528/problems/D

 

 

えでゅふぉ

システス通ればABCDの4完

https://codeforces.com/contest/1359