Problem - E - Codeforces
とりあえず番兵として -linf と +linf を 、の両端に と を追加。
と の間で LIS を見るだけになるが、隣り合った要素が 以上の差を持っていなければならない。
全要素から自分の index を引くと自然と達成できる。
より小さくなったものは、どうせ絶対に動かさなければならないので、 とでもしておけば OK。
Calendar Ambiguity
数学という感じの問題。解説 AC。
問題を要約すると 1/1 から何日経過したか?の mod が月と日にちを入れ替えても等しくなる 月 日の組合せの数を求めるということ。
月 日は 1/1 から 日経過している、 と が入れ替わっても での剰余は等しくなるため、
より
となる。
は常にかかってくるため、 が の倍数となれば良い。そのような の組合せを の範囲で計算すると正答が得られる( は入れ替わるので、両方が の制約内に収まるようにしなければならないため)。
GCD of an Array
素因数に着目すると、実はそんなに多くならないので、素数毎に multiset で、数列 A の中にそれぞれ何個出ているかを管理(0 は一つで代表)すると、間に合います。