做免费小说网站怎样赚钱,城乡住房和城乡建设部网站,营销网站建设培训学校,浙江省长兴县建设局网站首先做这个题是极其难受的#xff0c;第一次去做dp的题#xff0c;万事开头难#xff0c;虽然以前也接触过dp#xff0c;但是都极力躲避着用其他算法解决#xff0c;现在专门练这部分#xff0c;倒觉得#xff0c;你拍什么#xff0c;什么就会比想象中难很多#xff0… 首先做这个题是极其难受的第一次去做dp的题万事开头难虽然以前也接触过dp但是都极力躲避着用其他算法解决现在专门练这部分倒觉得你拍什么什么就会比想象中难很多没办法一点一点练吧 题意是说有n个设备对于每个设备有m个制造商每个制造商对应不同的带宽B)和价格P求出选出的n个设备使得总的B/p 最大。题意弄了半天才搞懂开始就写错了后来也是看了别人的代码才发觉是01背包问题狗血的是c 47Ms秒过gwa code#includeiostream
#includecstdio
#includecstring
#include algorithm
using namespace std;
int dp[101][1010];
int b[101],p[1010];
int main (){
int t,n,m;
scanf(%d,t);
while(t--)
{
int maxb;
memset(dp,-1,sizeof(dp));
scanf(%d,n);
maxb 0;
for(int i 1;i n;i)
{
scanf(%d,m);
for(int j 1;j m;j)
{
scanf(%d%d,b[j],p[j]);
maxb max(maxb,b[j]);
}
if(i 1)
{
for(int j 1;j m;j)
dp[1][b[j]] p[j];
continue;
}
for(int j 0;j maxb;j)
{
if(dp[i-1][j] ! -1)
{
for(int k 1;k m;k)
{
int tb min(j,b[k]);
if(dp[i][tb] -1)
dp[i][tb] dp[i-1][j] p[k];
else
dp[i][tb] min(dp[i][tb],dp[i-1][j] p[k]);
}
}
}
}
double ans 0;
for(int j 1;j maxb;j)
{
if(dp[n][j] ! -1)
ans max(ans,((double)j/dp[n][j]));
}
printf(%.3lf\n,ans);
}
return 0;
}