Hdu 2955 - Robberies
상태 전환 방정식:
dp[j]=max(dp[j],dp[j-m[i]]*(1-q[i]))
그 중에서 dp[j]는 j개의 대양을 빼앗은 후의 최대 탈출 확률을 나타낸다. 조건은 dp[j-m[i]가 도착할 수 있다는 것이다. 즉, 이전에 약탈한 적이 있다는 것이다.
초기화 dp[0]=1, 나머지는 0 또는 -1!
AC 코드:
#include <stdio.h>
#include <string.h>
double max(double a,double b)
{
if(a>b)
return a;
else
return b;
}
double q[1000];
double dp[100000];
int m[1000];
int main()
{
int T,i,j,sum,N;
double P;
scanf("%d",&T);
while (T--)
{
sum=0;
//double P;
scanf("%lf %d",&P,&N);
for(i=0;i<N;i++)
{
scanf("%d %lf",&m[i],&q[i]);
sum+=m[i];
}
memset(dp,0,sizeof(dp));
dp[0]=1.0;
for(i=0;i<N;i++)
for(j=sum;j>=m[i];j--)
{
dp[j]=max(dp[j],dp[j-m[i]]*(1-q[i]));
}
for(j=sum;j>=0;j--)
{
if(dp[j]>=(1-P))
{
printf("%d
",j);
break;
}
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.