この問題は、 DP を累積和で高速化することによって解くことができます。
まず、ゲーム的な DP (dp[n]= 石が n 個残っているときに今の手番の人が勝てるかどうか)を考えると、次のようになります。このとき、 dp[N] が true なら高橋くんの勝ち、そうでなければ青木くんの勝ちです。(なお、 ∧ は AND 、 xˉ は NOT の意味です。)
dp[0]dp[n]=false=i=An⋀Bndp[n−i]
以上の二番目の式は、 dp[n−Bi] から dp[n−Ai] までに false があれば true 、そうでなければ false となります。よって、 false の個数の累積和を取ると、次のようにできます。(Σdp[i] は dp[0] から dp[i] までにある false の個数です。)
Σdp[0]Σdp[n]=1=Σdp[n−1]+{01Σdp[n−Ai]−Σdp[n−Bi−1]≥1otherwise
このようにすると、 Σdp[N]−Σdp[N−1]=0 なら高橋くんの勝ちということになります。