gyouzasushi’s diary

競プロとか

今日の競プロ(2020/5/2) + AtCoder Beginner Contest 165

AtCoder : 1705 → 1755 (+50)

ABC165 A - We Love Golf

問題

こういうのは変に算数せず、全探索

提出

ABC165 B - 1%

問題

最大ケースがサンプルにあって優しい。C++でやったらオーバーフローしてもうたからPythonでやった。

提出

ABC165 C - Many Requirements

問題

何言ってるかよくわからないけど、とりあえず A が全探索できればよさそう。A として考えられる数列は、M 個のボールと N-1 個の仕切りの並べ替えと考えて {}_{N+M-1} C_{N-1} 通り。これは最大でも {}_{19} C_{9}=92,378 なので、いける。

実装も同じように、 M 個のボールと N-1 個の仕切り(に見立てたM 個の 0N-1 個の 1)をstd::next_permutationで回せばいける。

提出

ABC165 D - Floor Function

問題 

xB で割って x=qB+r とすると、

\begin{eqnarray} \lfloor \frac{Ax}{B} \rfloor - A \times \lfloor \frac{x}{B} \rfloor &=& \lfloor \frac{A(qB+r)}{B} \rfloor - A \times \lfloor \frac{qB+r}{B} \rfloor \\ &=& (Aq+\lfloor \frac{Ar}{B} \rfloor) - (Aq + \lfloor \frac{r}{B} \rfloor) \\ &=&  \lfloor \frac{Ar}{B} \rfloor -\lfloor \frac{r}{B} \rfloor \end{eqnarray}

r \lt B だから \lfloor \frac{r}{B} \rfloor=0で、結局

 \lfloor \frac{Ax}{B} \rfloor - A \times \lfloor \frac{x}{B} \rfloor=\lfloor \frac{Ar}{B} \rfloor

これは単調非減少なので、できるだけ大きい r\lt B をとればOK。

めっちゃ時間かけてもうた、割り算苦手すぎ。小学三年生の算数の授業でどれだけ苦労したことか…。

提出

ABC165 E - Rotation Matching

問題

パズル。

f:id:gyouzasushi:20200502235923p:plain

こうやるとM 個の対戦場に書かれた数字の差が全て異なるようになるので、同じ人と当たることもなくなる。

提出

ABC165 F - LIS on Tree

問題

DFSの順番で普通のLISと同じようにやればいける。DP配列を更新するときに更新前の値をメモしておいて、子から親に帰るときにDP配列の値を元に戻す。

提出

今日の競プロ(2020/5/1) + Codeforces Round #638 (Div. 2)

Codeforces : 2014 → 2081 (+67)

Codeforces Round #570 (Div. 3) F - Topforces Strikes Back

問題

三つのうち最大を決め打つと貪欲でいける。

  • a_i の約数の個数は a_i に比べてはるかに小さい
  • a_i より小さい a_i の約数は全部 \frac{a_i}{2} 以下

がポイント。

提出

JOI2014春合宿 M - ストラップ

問題

端子の数でソートして、「dp[i][j]=i 個目までみて、端子の数が j となるつけ方の嬉しさの最大値」。

提出

yukicoder No.1040 垂直大学

問題

提出

yukicoder No.1041 直線大学

問題

提出

yukicoder No.1042 愚直大学

問題

Desmosを睨んだら N \geq 1 で単調性がありそうに見えたので、信じて二分探索した。

提出

yukicoder No.1043 直列大学

問題

乾電池と豆電球それぞれについてナップザックDPしたあと、条件を満たす組み合わせを数え上げる。割り算が苦手すぎて一時間半くらいかけてもうた…。

提出

Codeforces Round #638 (Div. 2) A - Phoenix and Balance

問題

実験した。2^{\frac{n}{2}+1}-2

提出

Codeforces Round #638 (Div. 2) B - Phoenix and Beauty

問題

数列 ak の周期をもつ数列にすることができれば十分。

提出

Codeforces Round #638 (Div. 2) C - Phoenix and Distribution

問題

s はソートしておく。

  • s_1 \neq s_k のとき

s_1+s_{k+1}+s_{k+2}+\ldots+s_n, s_2, s_3,\ldots,s_k みたいにするのが最適で、答えは s_k

  • s_1 = s_k かつ s_{k+1} \neq s_n のとき

このときもs_1+s_{k+1}+s_{k+2}+\ldots+s_n, s_2, s_3,\ldots,s_k みたいにするのが最適。ただし答えは s_1+s_{k+1}+s_{k+2}+\ldots+s_n

  • s_1 = s_k かつ s_{k+1}=s_n のとき

s_{k+1} から s_n までをできるだけ均等に使うのが最適。答えは s_1+s_{k+1}*\lceil \frac{n-k}{k} \rceil

提出

Codeforces Round #638 (Div. 2) D - Phoenix and Science

 問題

1個、2個、4個、8個… みたいに殖えるのが最速。あまりは適当に調整できて、例えば n=18 なら 1,2,3,4,8n=25なら 1,2,4,8,10 みたいな。

提出

今日の競プロ(2020/4/30)

JOI2014春合宿 D - ラーメンの食べ比べ

問題

std::minmax_element を知っていますか?僕は今日知りました!

提出

Codeforces Round #570 (Div. 3) A - Nearest Interesting Number

問題

提出

Codeforces Round #570 (Div. 3) B - Equalize Prices

問題

提出

Codeforces Round #570 (Div. 3) C - Computer Game

問題

🐓🐢

提出

Codeforces Round #570 (Div. 3) D - Candy Box (easy version)

問題

貪欲に〜〜

提出

Codeforces Round #570 (Div. 3) E - Subsequences (easy version)

問題

S の部分文字列のうち、長さ 0 から n までのものがそれぞれいくつあるか」がわかればOK。部分文字列 数え上げ で検索。

提出

Codeforces Round #570 (Div. 3) G - Candy Box (hard version)

問題

D と同じ要領でやればいけるはずが、Wrong answer on test 15 が一向になおらず…。

出力を空白区切りから改行区切りに変えたら通りました。なんで?

提出

Codeforces Round #570 (Div. 3) H - Subsequences (hard version)

問題

E に同じ。

提出

今日の競プロ(2020/4/29)

JOI2013本選 2 - IOI 列車で行こう (Take the 'IOI' train)

問題

dp[i][j][k]=i 両目、j 両目を必ず使って、末尾の車両が k であるような IOI 列車の長さの最大値」をする。

提出

Codeforces Round #575 (Div. 3) A - Three Piles of Candies

問題

提出

Codeforces Round #575 (Div. 3) B - Odd Sum Segments

問題

提出 

Codeforces Round #575 (Div. 3) C - Robot Breakout

問題 

提出

Codeforces Round #575 (Div. 3) D2 - RGB Substring (hard version)

問題

RGBRGB..., GBRGBR..., BRGBRG..., 全部試す

提出

Codeforces Round #575 (Div. 3) E - Connected Component on a Chessboard

問題

f:id:gyouzasushi:20200429230644p:plain

b \geq w のとき)これより偏ってたらアウト、そうじゃなかったら周りの黒を適宜削れば構築できる。

b \lt w のときも白黒入れ替えたら同じ。

提出

Codeforces Round #575 (Div. 3) F - K-th Path

問題

k 番目に短いパスに含まれうるのは短い方から k 本の辺だけなので、短い方から k 本の辺だけのグラフで Warshall–Floyd すればいける。

提出

コメント

f:id:gyouzasushi:20200429231607p:plain

Div.3 バチャ全完はじめてでめっちゃ嬉しい。

今日の競プロ(2020/4/28)

Codeforces Round #582 (Div. 3) F - Unstable String Sort

問題

昨日の残り。なんか微妙に問題を勘違いしてて、

3 2

3 1 2

3 2 1

が YES なんが理解できんくてちょっと苦しんだ。

提出

JOI2013予選 E - 魚の生息範囲 (Fish)

問題

座標圧縮〜〜〜

提出

Codeforces Round #579 (Div. 3) A - Circle of Students

問題

提出

Codeforces Round #579 (Div. 3) B - Equal Rectangles

問題

提出

Codeforces Round #579 (Div. 3) C - Common Divisors

問題

提出

Codeforces Round #579 (Div. 3) D2 - Remove the Substring (hard version)

問題

Yutori とちょっと似た発想?これすぐ解けたん嬉しい。

提出

Codeforces Round #579 (Div. 3) E - Boxers

問題

これの上位互換みたいなやつこの前 Div.3 で見たな。典型なんかな? 

提出

Codeforces Round #579 (Div. 3) F2 - Complete the Projects (hard version)

問題

解説AC。めちゃくちゃ勉強になった…。

とりあえず二つを入れ替えたらどうなるかを考えるところから始める!

提出

今日の競プロ(2020/4/27)

JOI2011本選 C - JOI 国の買い物事情 (Shopping in JOI Kingdom)

問題

昨日の今日でまたちょっと変わった Dijkstra やった。今日はちゃんと解けた!昨日の反省を活かしすぎ。

四捨五入難しいね。

提出

Codeforces Round #582 (Div. 3) A - Chips Moving

問題

提出

Codeforces Round #582 (Div. 3) B - Bad Prices

問題

やや難読

提出

Codeforces Round #582 (Div. 3) C - Book Reading

問題

提出

Codeforces Round #582 (Div. 3) D2 - Equalizing by Division (hard version)

問題

小さい方から使う。めっちゃ時間かけてもうた…。

提出

Codeforces Round #582 (Div. 3) G - Path Queries

問題

E, F より解かれてたから先にやった。

atcoder.jp

これです。好き

提出

Codeforces Round #582 (Div. 3) E - Two Small Strings

問題

場合分け。

提出

今日の競プロ(2020/4/26) + AtCoder Beginner Contest 164 + Educational Codeforces Round 86

AtCoder : 1705 → 1705 (±0)
Codeforces : 1985 → 2014 (+29)

Codeforces Round #587 (Div. 3) A - Prefixes

問題

提出

Codeforces Round #587 (Div. 3) B - Shooting

問題

提出

Codeforces Round #587 (Div. 3) C - White Sheet

問題

提出

Codeforces Round #587 (Div. 3) D - Swords

問題

提出

Codeforces Round #587 (Div. 3) E2 - Numerical Sequence (hard version)

問題

丁寧に数えていったら通る。苦行すぎる…。

提出

Codeforces Round #587 (Div. 3) F - Wi-Fi

問題

dp1[i]= 部屋 i までみたときのコストの最小値」、「dp2[i]= 部屋 i までみて、部屋 i に必ずルーターを設置するときのコストの最小値」をする。

提出

ABC164 A - Sheep and Wolves

問題

提出

ABC164 B - Battle

問題

cout << "NO" << endl;

で1WA。もったいな〜〜

提出

ABC164  C - gacha

問題

提出

ABC164  D - Multiple of 2019

問題

右端が一の位!右端が一の位!

提出

ABC164  E - Two Currencies

問題

(頂点, 銀貨の枚数)でDijkstra。これ解いときたかったなあ。

提出

Educational Codeforces Round 86  A - Road To Zero

問題

提出

Educational Codeforces Round 86  B - Binary Period

問題

提出

Educational Codeforces Round 86  C - Yet Another Counting Problem

問題

嫌いやけどがんばった。lcm(a,b) 周期で考える。

提出

Educational Codeforces Round 86  D - Multiple Testcases

問題

大きい方から貪欲に使っていく。実装はこれっぽい雰囲気?

提出

Educational Codeforces Round 86  E - Placing Rooks

問題

好き系。0 \lt  k \lt n でそれぞれの行に一つずつルークを置くような場合だけを考えたらよくて、これは結局 n 列のうちちょうど n-k 列にルークを置く場合の数。
包除できてなくてコンテスト中には通せませんでした え?

提出