geam1113’s diary

主にAtcoderのコンテストの備忘録を書きます。AtCoder緑と水色を行ったり来たりしています。

ARC125 参加記録

コンテスト中AC:A

 

A - Dial Up

aに1しかないのにTに1がある場合、-1です。0の場合も同様です。以下、そうでない時を考えます。

 

aを円環とみなしたとき、a_1と異なる数のうち最も近い位置と、a_1との距離をdとします。

 

bへの追加操作は明らかにM回必要であるため、以下ではシフト操作のみを考えます。

 

Tの先頭から調べ、初めてa_1と異なる数が現れたとき、d回のシフト操作が必要です。

 

その後は、aを1回シフトすれば異なる数にすることができ、これが最適なので、TT_iT_{i+1}が異なる毎にシフト操作が1回必要になります。

 

これで最小の操作回数を求めることができました。

 

B - Squares

解けなかったため、解説見ました。

 

条件の2つ目は、整数zを用いて、x^2-y=z^2と表現でき、移項と因数分解で、(x+z)(x-z)=yとなります。

x-z=p,\ q=x-zおくと、連立方程式の解を求めるのと同じようにp,qの組みに対し、x,zの組みが一意に定まります。よって、p,qの組みを数える問題に帰着できます。

 

x,yの条件からp,qの満たす条件を求めます。

y=pq \Longleftrightarrow 1≦pq≦N

x,y,zが整数\Longleftrightarrow p,qが整数

x=\frac{p+q}{2} \Longleftrightarrow 1≦\frac{p+q}{2}≦N,\ \frac{p+q}{2}が整数

\frac{p+q}{2}が整数\Longleftrightarrowp,qの偶奇が等しい

 

また、1≦pq≦Nより、正正、負負があり得ますが、1≦\frac{p+q}{2}≦Nより、負負の組み合わせはあり得ません。よって、p,qは正整数です。

 

p,qは正整数なので、x>zとなり、x+z≧x-zであるから、p≧qが成り立ちます。

ここで、 1≦pq≦N,\ p≧qなので、1≦q≦\sqrt{N}が成り立ちます。これにより、qの全探索が可能なことがわかりました。

 

qを定めれば、pの範囲はq≦p≦\lfloor{N/q} \rfloorであり、このうちqと偶奇が等しいものを数え上げれば良いです。条件を満たすpO(1)で計算できます。

 

提出コード:https://atcoder.jp/contests/arc125/submissions/25356430