だいたい競プロこの広告は、90日以上更新していないブログに表示しています。Aにe-monさんと出た。roundに進めて、204位だったので進めた。N)のみが回文となる。Candies(GIVCANDY)e-monさんが読んで、僕とe-monさんで解法を考えて、e-monさんが書いた問題AlvinはA個の、BertoはB個のキャンディを持っている。AlvinにC個ずつのキャンディの袋を、BertoにD個ずつキャンディの袋を、それぞれにいくつか与えることで、AlvinとBertoの持っているキャンディの個数の差の絶対値を最小にしたい。そのときの最小値を求めよ。解法Alvinにx袋、Bertoにy袋与えたとする。K、つまりCx-Dy=K+B-AもしくはDy-Cx=K+A-Bとなる。D)=1のとき、方程式Cx-Dy=1は必ず解を持つので、K=0とできる。Cx-Dy=B-Aは、A<=Bのとき必ずx,yが0以上となる解を作れる。A>Bのときは、Dy-Cx=A-Bを考えれば同様に可能。0にならなければいけない。(A-B+g)%g)が答えになる。end_i]がN個(10^5以下)が与えられる。区間スケジューリング問題なので、ある値tが与えられたときに、次にどの区間を取ればいいかが一意に決まる。10^6について、時刻tで次の区間をとったときの終わりを記録しておけばよい。これは、時刻tでとる次の区間は、時刻t-1で取る区間よりも前にならないことを利用して、尺取り法っぽくやれば線形でできる。クエリが与えられるたびに、そのまま次のものを辿って数えていくと最悪O(QN)になる。そこで、時刻tから2^k個、区間をとったときの終わりの時刻を求めておいて、クエリのたびに二分探索すればlogオーダーに落ちて間に合う。この操作は蟻本のLCA*1のところに書いてある操作(ダブリング)を真似すればよい。(1)はてなブログをはじめよう!n_knuuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。