ACM3-1024
来源:互联网 发布:程序员笔试逻辑题 编辑:程序博客网 时间:2024/06/06 00:44
Problem X
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)
Total Submission(s) : 58 Accepted Submission(s) : 31
2 1010 15 105 10 53 105 10 53 5 62 7 3
511
题意:首先给出物品数量和手中资金
人后每样物品给出价格,需要购买时手中至少需要多少资金,还有物品本身的价值
要求求出最大资金
思路:01背包,要注意的是要先按q-p排序
原本我是按其价值排序的,WA一次
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
struct node
{
int p,q,v;
} a[555];
int cmp(node x,node y)//按q-p排序,保证差额最小为最优
{
return x.q-x.p<y.q-y.p;
}
int main()
{
int n,m,i,j;
int dp[5555];
while(~scanf("%d%d",&n,&m))
{
for(i = 0; i<n; i++)
scanf("%d%d%d",&a[i].p,&a[i].q,&a[i].v);
memset(dp,0,sizeof(dp));
sort(a,a+n,cmp);
for(i = 0; i<n; i++)
{
for(j = m; j>=a[i].q; j--)//剩余的钱大于q才能买
{
dp[j] = max(dp[j],dp[j-a[i].p]+a[i].v);//这里的j-a[i].p决定了之前的排序方法
}
}
printf("%d\n",dp[m]);
}
return 0;
}
- ACM3-1024
- ACM3-1006
- ACM3-1002
- ACM3-1003
- ACM3-1005
- ACM3-1016
- ACM3-1018
- ACM3-1013
- ACM3-1022
- ACM3-1015
- ACM3-1014
- ACM3-1010
- ACM3-1007
- 寒假杭电acm3
- Acm3-栈、队列、及移位运算符
- 1024
- 1024
- 1024
- 创建线程介绍及 GCD 简单使用
- Docker在PHP项目开发环境中的应用
- 搭建svn
- navicat使用http隧道访问mysql
- 密码显示
- ACM3-1024
- Fragment+ViewPager的简单使用 Android
- leetcode 22. Generate Parentheses-回溯|递归
- 多线程的理解
- 集成学习概述
- 数组无序查找
- 服务器之Windows和Linux
- 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现文档分类
- 2016.5.28【初中部 NOIP提高组 】模拟赛C