数学(代数)
maspy さんの次のツイートがすべて!! F(cnt,sum) という組と定数加算作用が遅延セグ木にのるというのはよく知られていると思いますが、これは要素に対する (0乗和, 1乗和) と解釈できて、組 (0,1,...,k 乗和) などに一般化できます。今回は要素 (x,y) に対…
すごく教育的問題! 問題へのリンク 問題概要 非負整数 が与えられるので、次の値を 998244353 で割った余りを求めよ。 & 制約 考えたこと この手の問題は「主客転倒」して、上記の総和を各桁ごとに考えればよいと相場が決まっている!!! 具体的には、次の…
方程式を解くのに二分探索が使えることが多々ある! 問題へのリンク 問題概要 正の整数 が与えられる。 を正の実数 を求めよ。ただし、相対誤差または絶対誤差が 0.001 以内であれば正解とみなされる。 制約 メモ editorial にとても解法が書いてある。 gith…
愚直に や を求めようとすると、色んな理由でおかしくなってしまう。数学的に綺麗に処理しよう! 問題へのリンク 問題概要 整数 が与えられる。 と の大小関係を求めよ (大きい、小さい、等しい)。 制約 考えたこと や はまともに計算するとものすごい桁数に…
「回数の期待値」は、(k 回以上の確率) の総和に一致する!! あとは有名な「 個の一次関数の積は二分木のような計算順序で の計算量で求められるという話! 問題へのリンク 問題概要 色が であるような靴下が 枚ずつある。いずれも 2 種類以上ある。 これら…
for 文を用いるのが楽だと思う。 問題へのリンク 問題概要 マグニチュード の地震は、マグニチュード の地震の何倍の強さか? (1 上がると 32 倍となる) 制約 解法 を 回かけた値を求めればよい (つまり )。 これを求めるためには、関数 pow() を用いるか、f…
コンテスト中には通しきれなかった。流石に疲れていて頭が働かなかった......これはメモ代わりに記す。 問題へのリンク 問題概要 整数値 が等確率で出てくるルーレットがある。 先手と後手が交互にルーレットを回す すべての整数値が揃ったら終了である すで…
ちょっとした式変形のスキルも要求される。 問題へのリンク 問題概要 コンテストの参加回数 、表示レーティングは次のようになる。 のとき:内部レーティングに一致する のとき:内部レーティングから を引いた値となる 高橋君のコンテスト参加回数が で表示…
整理するのが難しい! 問題へのリンク 問題概要 3 個の 1 桁の整数 が与えられる。 このうちの 2 個を選んで並べて 2 桁の整数を作る。さらに、その残りの 1 個の整数をそれに足す。 こうしてできる整数の最大値を求めよ。 解法 たとえば、3 個の整数が のと…
が等差数列かどうかを判定する問題 問題へのリンク 問題概要 3 つの整数 が等差数列かを判定せよ。 すなわち、 であるかどうかを判定せよ。 解法 問題文の通りに、b - a == c - b かどうかを判定すれば OK。 #include <bits/stdc++.h> using namespace std; int main() { in</bits/stdc++.h>…
問題の理解がちょっと大変。数学の素養がないと厳しいかもしれない。 問題へのリンク 問題概要 正の整数 ( を満たす) が与えられる。 また、 個の整数 が与えられるので、各 について、次の条件を満たす整数 を求めよ。 である 以上 以下の任意の整数 に対し…
素直に for 文で探索すればよいのだけど、意外と A をどこまで探索すればいいのかの判断も難しくて、戸惑った人も多いかもしれない。 問題へのリンク 問題概要 正の整数 が与えられる。 となる正の整数 を求めよ。存在しない場合は -1 を出力せよ。 制約 考…
等差数列の和の公式を使ってもいいし、素直に for 文を足してもいい。 問題へのリンク 問題概要 正の整数 が与えられる。 の値を答えよ。 解法 1 素直に for 文で足していく方法。 #include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; int res = </bits/stdc++.h>…
AOJ 2373 HullMarathon とよく似た問題。 問題へのリンク 問題概要 二次元平面上に 点を以下の条件を満たすように配置する。各点を とし、偏角を とする。 点 と、原点との距離は このとき、多角形 の面積の最大値を求めよ。 制約 考えたこと ほとんどこの問…
面白かった! 問題へのリンク 問題概要 整数係数の多項式 と、整数定数 が与えられる。 を展開したときの各係数を 998244353 で割った余りを求めよ。 制約 考えたこと Polynomial Taylor Shift については、次の記事に詳しく書いた。計算量は となる。 drken…
Polynomial Taylor Shift を履修したので、簡単にまとめてみます。例によって、Yosupo Library Checker の 問題 を通します。 なお、Polynomial Taylor Shift の解法は、単なるライブラリ整備の一環とみなすというよりは、その導出過程をぜひ押さえておきた…
FPS + 負の二項係数 問題へのリンク 問題概要 長さが で総和が であるような、正の整数のみからなる数列 すべてについての の総和を 998244353 で割ったあまりを求めよ ( ケース)。 制約 解法 (1):FPS 求めたいものは である。これはちゃんと計算すると、 …
みたいな連立方程式を解いた経験があれば、思いつきやすいかもしれない。 問題へのリンク 問題概要 (インタラクティブ) 0 と 1 のみからなるサイズ の数列 があるが、未知である。いくつか質問を繰り返すことで、この数列を特定したい。 最大で 回まで質問す…
すごくシンプルだけど詰まる部分もたくさんありそうな問題 問題へのリンク 問題概要 二次元平面上に、2 組の 個の点集合 、 がある。 に含まれる 個の点に対して、一律に 原点を中心とした回転をする (角度は任意) 平行移動をする (移動量は任意) を実施する…
意外と頭がこんがらがるかもしれないですね。100 点問題で必須となるテクニックではないですが、ソートすると考えやすいと思います。 問題へのリンク 問題概要 個の整数 が与えられる。 これら 個の整数を適切に並び替えることで、等差数列にすることが可能…
XOR は 2 回やると元に戻る!!!(素振り!) 問題へのリンク 問題概要 非負整数 が与えられます。 ^ = を満たす整数 を求めてください。 制約 XOR とは XOR 演算は、AND と OR と同じく、ビット (整数) 同士で定義される演算です。ビットについては次の記事…
茶色 diff にはなると思ったけど、灰色 diff だった...「/2」が必要と感じて詰まる人も多いと思ったのに... 問題へのリンク 問題概要 個の整数 が与えられる。 を満たすすべての に対しての の総和を 1000000007 で割ったあまりを求めよ。 制約 考えたこと …
「作れる数が連続する整数になる」というの、実は結構よくある!! 問題へのリンク 問題概要 個の整数 がある。 これらから 個以上の整数を選んで合計して得られる整数としてありうるものの個数を 1000000007 で割ったあまりを求めよ。 制約 考えたこと まず…
重たい。。。 でも例えば行列 に対して の計算を行列累乗に帰着させるテクニックは、蟻本中級編の行列累乗のところに載っていたりする。それを膨らませると みたいな計算も、行列累乗でできそうという気持ちには確かになるよね。。。(なったけど昨日間に合わ…