私はこの質問を解決していました。以下のとおりです
ジョーはリストから整数を選びます 1,2,⋯,N 確率で pi ピッキングの i すべてのために 1≤i≤N。それから彼はジェイソンを与えますK彼の数を推測しようとします。推測のたびに、ジョーはジェイソンの推測よりも多いか少ないかをジェイソンに伝えます。ジェイソンがジョーの番号を正しく推測した場合、K推測では、ゲームは終了し、ジェイソンが勝ちます。ジェイソンはそうでなければ負ける。ジェイソンがすべてを知っている場合p′is 彼が勝つ確率はどれくらいですか?
1≤N≤200000
1≤K≤20
この問題を動的プログラミングで試しました。しましょうDP[i][j][k] 数が次のようになるような勝率を格納します i そして j 包括的かつ唯一 kチャンスが残っています。そう
DP[i][j][k]=maxi≤l≤j{pl+DP[i][l−1][k−1]+DP[l+1][j][k−1]}DP[i][j][1]=maxi≤l≤jpl Base Case
しかし、の範囲が非常に高いため、この解決策は実行できません。したがって、私はソリューションを探していたときに、次のソリューションに遭遇しました(インターネットで受け入れられました)
NO(n)
- Sort()p[]
- Σmin (n 、2k−1)i=0pi
入力両方の解を実行すると、同じ答えが得られます。したがって、私の質問は、上記のアルゴリズムがどのように機能しているかであり、私のdpの公式から同じ結論にたどり着くことができますか?{それが正しい場合}。N=5,K=2,p=[0.2,0.3,0.4,0.1,0.0]