社区讨论

为甚么错了?

P2240【深基12.例1】部分背包问题参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo2b8qvi
此快照首次捕获于
2023/10/23 11:00
2 年前
此快照最后确认于
2023/11/03 11:10
2 年前
查看原帖
#include <cstdio>
using namespace std;
int h[110];
double cost[110];
int main()
{
    int n,t,i,j,temp;
	double ans=0;
    double m;
    cin>>n>>t;
    for(i=1;i<=n;i++)
    {
      cin>>h[i];
	  cin>>m;
      cost[i]=m/h[i];
    }
    for(i=n;i>=2;i--)
      for(j=1;j<=i-1;j++)
        if(cost[j]<cost[j+1])
        {
          temp=cost[j];
          cost[j]=cost[j+1];
          cost[j+1]=temp;
          temp=h[j];
          h[j]=h[j+1];
          h[j+1]=temp;
        }
    for(i=1;i<=n;i++)
    {
      if(t==0)
        break;
      else
      {
        if(t-h[i]>-0.000001)
        {
          ans+=t*cost[i];
          t=0;
        }
        else
        {
          ans+=h[i]*cost[i];
          t-=h[i];
        }
      }
    }
     printf("%.2lf",ans);
    return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...