ferinの競プロ帳

競プロについてのメモ

2019-04-01から1ヶ月間の記事一覧

Codeforces Round #556 (Div. 2) D. Three Religions

問題ページ 解法 まずクエリが存在しない場合にどのように解くか考える。構造が複雑で制約も小さいのでdpをする。 文字列 の 番目までで(文字列1の 文字 && 文字列2の 文字 && 文字列3の 文字)をつくれるか? という愚直なdpがあるがこのままでは状態数が大き…

GCJ 2019 R1B Fair Fight

問題ページ 解法 部分点は で取りうる区間を全探索すればよい。 満点では 個の区間を全部見ているのでは間に合わない。 が最大になり、 についても条件を満たすような区間がそれぞれ何個あるか?を各 に対して求めることで答えを求める。この各区間に課され…

Tenka1 Programmer Contest 2019 E - Polynomial Divisors

問題ページ 解法 解説放送で言ってることを自分流に書いたもの pを一つ固定してその素数が条件を満たすか判定することを考える。pで割り切れるか考えるので以降ではmod pで考える。任意のxに対してf(x)=0 mod pとなればよい。フェルマーの小定理よりx=x^pで…

Tenka1 Programmer Contest 2019 D - Three Colors

問題ページ 考えたこと 部分和問題っぽくて貪欲は無理そうだし制約小さいしまあDP dp[i番目まで][R=j][G=j] みたいなDPを考える R,G,Bは90000くらいまで取りうるのでどう考えても無理 三角形の成立条件を考える R+G>B && R+B>G && B+G>R どれか一つ和を持っ…

乱択

https://codeforces.com/blog/entry/61587 の必要なところのメモ 乱数生成 rand() 乱数生成の質が微妙なのでやめよう こどふぉだと最大値が32767しかないのでさらにまずい mt19937 C++11以上で追加された機能でメルセンヌツイスターで乱数を生成する 高速 最…

Codeforces Round #539 (Div. 2) F. Sasha and Interesting Fact from Graph Theory

問題ページ 解法 頂点a,bを結ぶパスの辺をe本と固定したときの組み合わせ数を求める。まずn-2個の頂点からパス上のe-1個の頂点を選ぶ方法がP(n-2, e-1)通りである。次にパス上の辺の重みを決定する方法について考える。mをe分割する方法はm個のボールの間(m-…