【CF】148D Bag of mice

1861 단어 ICE
http://codeforces.com/problemset/problem/148/D
제목: w 개 흰색 b 개 검은색, 공주 와 용 은 돌아 가면 서 취하 고 공주 가 먼저 취하 고 확률 로 하 나 를 얻는다.용 을 다 뽑 으 면 한 마리 가 튀 어 나 올 확률 이 있 습 니 다.(0<=w, b<=1000)
#include <bits/stdc++.h>

using namespace std;

int n, m;

const int N=1005;

double d[N][N][2];

int main() {

	scanf("%d%d", &n, &m);

	d[0][0][0]=0;

	d[0][0][1]=1;

	for(int i=1; i<=n; ++i) d[i][0][0]=d[i][0][1]=1;

	for(int j=1; j<=m; ++j) d[0][j][1]=1;

	for(int i=1; i<=n; ++i)

		for(int j=1; j<=m; ++j) {

			d[i][j][0]=(double)i/(i+j)+(1-d[i][j-1][1])*j/(i+j);

			if(i==1 && j==1) d[i][j][1]=1;

			else if(i>1 && j==1) d[i][j][1]=(double)i/(i+j);

			else d[i][j][1]=(double)i/(i+j)+(((1.0-d[i-1][j-1][0])*i+(1.0-d[i][j-2][0])*(j-1))/(i+j-1))*j/(i+j);

		}

	//for(int k=0; k<2; ++k) for(int i=0; i<=n; ++i) for(int j=0; j<=m; ++j) printf("d[%d][%d][%d]:%.3f
", i, j, k, d[i][j][k]); printf("%.15f
", d[n][m][0]); return 0; }

  
이 문 제 를 다 쓴 후에 sb 문제 QAQ i / (i + j) 의 기본 호출 정수 나 누 기 QAQ 를 발견 하지 못 하기 전에 저 는 계속 고민 하고 있 습 니 다. 제 생각 이 완전히 맞 습 니 다. QAQ 는 왜 문제 가 있 습 니까?마지막 으로 뒤에 문 제 를 써 서 이 문 제 를 발견 하고 QAQ 로 해 결 했 는데...
$d [i] [j] [0] $를 설정 하면 공주 선수 가 $i $개 백 $j $개 흑 이 길 확률 이 있 음 을 나 타 냅 니 다. $d [i] [j] [1] $는 용선 수가 $i $개 백 $j $개 흑 이 길 확률 이 있 음 을 나 타 냅 니 다.
분명히
왕비 가 잡 을 때: 1. 백 을 잡 고 P = i / (i + j) 2. 흑 을 잡 고 P = j / (i + j) d [i] [0] = i / (i + j) + (1 - d [i] [j - 1] [1]) * j / (i + j)
용 잡 을 때: 흑 을 잡 았 다: P = j / (i + j) 백 을 잡 았 다: P = i / (i + j - 1) 흑 을 잡 았 다: P = (j - 1) / (i + j - 1) 백 을 잡 았 다: P = i / (i + j)
d[i][j][1]=i/(i+j)+(((1-d[i-1][j-1][0])*i+(1-d[i][j-2][0])*(j-1))/(i+j-1))*j/(i+j)
스스로 이해 하 다

좋은 웹페이지 즐겨찾기