Charm Bracelet

Time Limit: 1 Sec  Memory Limit: 256 MB

题目连接

http://poj.org/problem?id=3624

Description

Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to fill it with the best charms possible from the N (1 ≤ N ≤ 3,402) available charms. Each charm i in the supplied list has a weight Wi (1 ≤ Wi ≤ 400), a 'desirability' factor Di (1 ≤ Di ≤ 100), and can be used at most once. Bessie can only support a charm bracelet whose weight is no more than M (1 ≤ M ≤ 12,880).

Given that weight limit as a constraint and a list of the charms with their weights and desirability rating, deduce the maximum possible sum of ratings.

Input

* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: Line i+1 describes charm i with two space-separated integers: Wi and Di

Output

* Line 1: A single integer that is the greatest sum of charm desirabilities that can be achieved given the weight constraints

Sample Input

4 6
1 4
2 6
3 12
2 7

Sample Output

23

HINT

题意

01背包裸题

题解:

01背包,滚动数组优化一下

代码:

//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 200001
#define mod 10007
#define eps 1e-9
int Num;
char CH[];
//const int inf=0x7fffffff; //нчоч╢С
const int inf=0x3f3f3f3f;
/* inline void P(int x)
{
Num=0;if(!x){putchar('0');puts("");return;}
while(x>0)CH[++Num]=x%10,x/=10;
while(Num)putchar(CH[Num--]+48);
puts("");
}
*/
//**************************************************************************************
inline ll read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
inline void P(int x)
{
Num=;if(!x){putchar('');puts("");return;}
while(x>)CH[++Num]=x%,x/=;
while(Num)putchar(CH[Num--]+);
puts("");
} struct node
{
int v,vl;
};
node a[maxn];
int dp[maxn];
int main()
{
int n,v;
while(scanf("%d%d",&n,&v)!=EOF)
{
memset(a,,sizeof(a));
memset(dp,,sizeof(dp));
//n=read(),v=re9ad();
for(int i=;i<=n;i++)
a[i].vl=read(),a[i].v=read();
for(int i=;i<=n;i++)
{
for(int j=v;j>=a[i].vl;j--)
{
dp[j]=max(dp[j],dp[j-a[i].vl]+a[i].v);
}
}
cout<<dp[v]<<endl;
}
}

最新文章

  1. Xamarin 免费了,你能做什么?
  2. Ring buffers and queues
  3. jQ中对attr()方法的理解
  4. 无法查找或打开pdb文件
  5. MySQL 卸载 --Mac
  6. PL/pgSQL的 RETURN NEXT例子
  7. 分页SQL模板
  8. js中运算符的优先级
  9. Linux内核驱动开发之KGDB原理介绍及kgdboe方式配置
  10. HDU 1171 Big Event in HDU (多重背包)
  11. wpf中ListBox的选中项与ComboBox间的绑定
  12. Java中读取txt文件中中文字符时,出现乱码的解决办法
  13. Python:Day16 闭包、装饰器
  14. java8 从对象集合中取出某个字段的集合
  15. 高并发秒杀系统--mybatis整合技巧
  16. C# 注册机功能开发,机器码设计
  17. 【学习笔记】JS设计模式总结
  18. 【WPF】WPF截屏
  19. 关于一点pthread_cond_t条件锁的思考以及实验
  20. NPOI读取Excel官方demo

热门文章

  1. pycharts实现可视化
  2. 35 - 并发编程-GIL-多进程
  3. SPI协议及其工作原理浅析【转】
  4. Linux 添加普通用户到 sudoers 文件
  5. linux 实现自动创建ftp用户并创建文件夹
  6. 利用Fidder工具抓取App数据包
  7. Android Webview中解决H5的音视频不能自动播放的问题
  8. Yii2使用驼峰命名的形式访问控制器
  9. oracle创建简单的包
  10. mvc3 RenderAction传参问题