您的位置:首页 > 其它

tjut 4968

2016-07-25 11:42 302 查看
#include<stdio.h>
#define inf 99999999
int main()
{
double dp_max[11][1005],dp_min[11][1005];
int t,n,AVG,sum;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&AVG,&n);
sum=AVG*n;
for(int j=0;j<=n;j++)
for(int i=0;i<=sum;i++)
dp_max[j][i]=-1,dp_min[j][i]=inf;

dp_min[0][0]=dp_max[0][0]=0;
for(int i=1;i<=n;i++)
for(int s=sum;s>=60;s--)
for(int j=60;j<=100&&j<=s;j++)
{
if(j<70)
{
if(dp_max[i][s]<dp_max[i-1][s-j]+2.0&&dp_max[i-1][s-j]!=-1)
dp_max[i][s]=dp_max[i-1][s-j]+2.0;
if(dp_min[i][s]>dp_min[i-1][s-j]+2.0)
dp_min[i][s]=dp_min[i-1][s-j]+2.0;
}
else if(j<75)
{
if(dp_max[i][s]<dp_max[i-1][s-j]+2.5&&dp_max[i-1][s-j]!=-1)
dp_max[i][s]=dp_max[i-1][s-j]+2.5;
if(dp_min[i][s]>dp_min[i-1][s-j]+2.5)
dp_min[i][s]=dp_min[i-1][s-j]+2.5;
}
else if(j<80)
{
if(dp_max[i][s]<dp_max[i-1][s-j]+3.0&&dp_max[i-1][s-j]!=-1)
dp_max[i][s]=dp_max[i-1][s-j]+3.0;
if(dp_min[i][s]>dp_min[i-1][s-j]+3.0)
dp_min[i][s]=dp_min[i-1][s-j]+3.0;
}
else if(j<85)
{
if(dp_max[i][s]<dp_max[i-1][s-j]+3.5&&dp_max[i-1][s-j]!=-1)
dp_max[i][s]=dp_max[i-1][s-j]+3.5;
if(dp_min[i][s]>dp_min[i-1][s-j]+3.5)
dp_min[i][s]=dp_min[i-1][s-j]+3.5;
}
else
{
if(dp_max[i][s]<dp_max[i-1][s-j]+4.0&&dp_max[i-1][s-j]!=-1)
dp_max[i][s]=dp_max[i-1][s-j]+4.0;
if(dp_min[i][s]>dp_min[i-1][s-j]+4.0)
dp_min[i][s]=dp_min[i-1][s-j]+4.0;
}
}
printf("%.4lf %.4lf\n",dp_min
[sum]/n,dp_max
[sum]/n);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: