社区讨论
为甚么错了?
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 条回复,欢迎继续交流。
正在加载回复...