dp 注意不能越界
软件开发
i个人
求做两个软件
每个软件m块
花费最小时间
五重循环
1 第几个人
2,3,4,5
循环
比较第i个人和之前的人那个做的多
#include
#include
#include
using namespace std;
int n,m;
int d1[105],d2[105];
int dp[105][105][105];
int main()
{
//freopen("development.txt","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>d1[i]>>d2[i];
for(int i=0;i<=m;i++)
{
for(int j=0;j<=m;j++)
{
dp[1][i][j]=d1[1]*i+d2[1]*j;
}
}
/* for(int k=0;k<=m;k++)
{
for(int l=0;l<=m;l++)
cout<=0;done1--)
{
for(int done2=m;done2>=0;done2--)
{
//
for(int need1=0;need1<=done1;need1++)
{
for(int need2=0;need2<=done2;need2++)
{
int temp;
//temp=d1[i]*need1+d2[i]*need2-dp[i-1][done1][done2];
/*
if(temp>0)
dp[i][done1+need1][done2+need2]=min(dp[i-1][done1+need1][done2+need2],dp[i-1][done1][done2]+temp);
else*/
//dp[i][done1+need1][done2+need2]=/*min(dp[i-1][done1+need1][done2+need2],*/dp[i-1][done1][done2]/*)*/;
temp=d1[i]*need1+d2[i]*need2;
dp[i][done1][done2]=min(dp[i][done1][done2],max(dp[i-1][done1-need1][done2-need2],temp));
}
}
}
}
}
cout<k>j-m
浙公网安备 33010602011771号