题目链接

  对食材进行排序,重载运算符代码如下:

struct food{
long long a,b,c;
bool operator <(const food &a)const{
return c*a.b<a.c*b;
}
}s[];

  理由是,如果你先做当前的食材,让下一个食材等着,那下一个食材的损失就是c*a.b

  如果你先做下一个食材,让当前食材等着,当前食材损失就是a.c*b

  那当然以损失小为原则排序

  随后就是普通的01背包。代码如下:

  

#include<cstdio>
#include<algorithm>
#include<cctype>
#include<ctime>
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} struct food{
long long a,b,c;
bool operator <(const food &a)const{
return c*a.b<a.c*b;
}
}s[]; long long f[];
long long ans;
int main(){
long long m=read(),n=read();
for(long long i=;i<=n;++i) s[i].a=read();
for(long long i=;i<=n;++i) s[i].b=read();
for(long long i=;i<=n;++i) s[i].c=read();
std::sort(s+,s+n+);
for(long long i=;i<=;++i)
for(long long j=m;j>=s[i].c;--j)
f[j]=std::max(f[j],f[j-s[i].c]+s[i].a-j*s[i].b);
for(long long i=;i<=m;++i) ans=std::max(ans,f[i]);
printf("%lld",ans);
return ;
}

最新文章

  1. lamper技能树
  2. getbyclass
  3. ACM2013.9.7
  4. IPhone手机自动添加到itunes设置
  5. 猎豹使用AI RoboForm填表
  6. IntelliJ IDEA14 安装
  7. linux下javaEE系统安装部署
  8. 使用Python做科学计算初探
  9. uncompyle2 windows安装和使用方法
  10. Swift - 使用相机拍摄照片
  11. jquery data属性的使用
  12. 输入和输出--RandomAccessFile类
  13. mysql 导出每张表中的100条数据..............
  14. 洛谷p1067
  15. 探秘小程序(10):分享功能+webview
  16. .NET JSON 转换 Error ” Self referencing loop detected for type“
  17. 057 Hive项目案例过程
  18. wapp HTTP Error 404. The requested resource is not found.
  19. c#按照指定长度切分字符串
  20. 修改SQL Server 的排序规则(转)

热门文章

  1. _CrtDumpMemoryLeaks()的作用 检测内存泄漏
  2. Android Studio项目上传到GitHub
  3. Lucene-安装和运行Demo程序
  4. ajax传给springMVC数据编码集问题
  5. 洛谷 P2916 [USACO08NOV]为母牛欢呼Cheering up the Cows
  6. Catalan 数
  7. Python字符编码补充
  8. 给 MSYS2 添加国内源
  9. tomcat性能优化 - 网络抄录
  10. HTTP协议重定向