hdu 3496 Watch The Movie(DP)
제목:
**오늘 저녁에 영화를 봐야 하기 때문에 삼촌에게 영화를 사 달라고 했지만 영화를 볼 시간이 제한되어 있고 상점에서 파는 영화의 액수도 일정합니다.영화마다 가치가 있다.최대의 가치를 추구하다.만약 많이 산 영화를 다 보지 못하면 0을 출력한다.
T조 데이터가 있는데 n은 n종의 영화가 있음을 표시하고 m은 상점에서 가장 많이 파는 영화의 수를 표시하며 l은 이 저녁에 허용된 영화 관람 시간을 나타낸다.다음 n줄은 각 영화의 시간과 가치를 입력한다.
dp[j][k]=max(dp[j-1][k-cost[i]]+value[i])
dp[j][k]는 시간을 들여 k가 j편의 영화를 보고 얻은 최대 가치를 나타낸다.
마지막으로 dp[m][l]의 존재 여부를 판단하면 됩니다!
#include"stdio.h"
#include"string.h"
#define max(x,y) x>y?x:y;
int dp[101][1001];
int main()
{
int n,m,l,i,j,k;
int t,cost[101],value[101];
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&m,&l);
for(i=1;i<=n;i++)
scanf("%d%d",&cost[i],&value[i]);
memset(dp,-1,sizeof(dp));
for(i=0;i<=l;i++)
dp[0][i]=0;
for(i=1;i<=n;i++)
{
for(j=m;j>=1;j--)
{
for(k=l;k>=cost[i];k--)
if(dp[j-1][k-cost[i]]!=-1)
dp[j][k]=max(dp[j][k],dp[j-1][k-cost[i]]+value[i]);
}
}
if(dp[m][l]==-1)dp[m][l]=0;
printf("%d
",dp[m][l]);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.