ABC129 E - Sum Equals Xor
解法
制約を見ると明らかに桁DPのような匂いがするので桁DPをしました。
の上から桁目をとします。
となるが存在した場合、をすると繰り上がりが発生するので、となります。逆に、それ以外のはどれを使用してても問題の条件を満たします。
ということで、のみを選択してとなるのペアの個数を求めることができればよいです。
という配列を用意します。添え字はそれぞれ次のことを表します。
今上から何桁目までの数字を決めたか
:が未満の数字であることが確定しているかどうか
つまり、
は、上から桁だけ数字を決めて、どちらも未満であるようなペアの個数
は、上から桁だけ数字を決めて、となっているようなペアの個数
となります。
このようなことができるのは、上から数字を決めていったときに、その時点でが確定していれば、それより下の桁をいかなる数字にしても、であることが決まっているからです。
の上から桁目をとして、について場合分けをしつつ遷移を見ていきます。
が
1
のとき
からの遷移を考えます。
のときに、桁目でをそれぞれ選んだ場合どうなるか、を考えると、
を選んだ際はが確定します。
逆に、を選んだ際は、となります。
ということで、まず
が決まります。
のときに、桁目でをそれぞれ選んだ場合どうなるか、を考えると、
どれを選んでもが確定しています。
よって、
となります。
遷移元がこれで全部になるので、結局遷移は
となります。が
0
のとき
同様にしてからの遷移を考えます。
のときに、桁目でをそれぞれ選んだ場合どうなるか、を考えると、
を選んだ際でも、となります。
を選ぶことはできません。を超えてしまいます。
ということで、まず遷移は
となります。 のときはというと、
どれを選んでもが確定しています。
ということで、
となります。
よって、
となります。
あとは、この場合分けをもとに遷移を行っていけばよいです。
初期状態ですが、
、とみなすことができ、未満であることはもちろん確定していないので、となります。
答えは、となります。
感想
逆に、DPでない方法を考えることができませんでした。
いろいろな方法を思いつけるようになりたいですね。