vijos 1104
2016-07-21 19:54
302 查看
#include<iostream>
#include<cstdio>
using namespace std;
//采药的时间 T
int w[110];//物品的time,
int v[110];//物品对应的待加
//M为物品的个数
int main()
{
int T, M;
scanf("%d%d", &T, &M);
for(int i=0; i<M; i++)
scanf("%d%d", &w[i], &v[i]);
int m[110][110] = {0};
for(int j=0;j<=T; j++)
{
if(j<w[M-1])
m[M-1][j] = 0;
else
m[M-1][j] = v[M-1];
}
for(int i=M-2; i>=0; i--)
{
for(int j=0; j<=T; j++)
{
if(j<w[i])
m[i][j] = m[i+1][j];
else
m[i][j] = max(m[i+1][j], m[i+1][j-w[i]]+v[i]);
}
}
int ans = 0;
for(int i=0; i<M; i++)
{
for(int j=0; j<=T; j++)
{
ans = max(ans, m[i][j]);
}
}
printf("%d\n", ans);
return 0;
}
/*
70 3
71 100
69 1
1 2
*/
#include<cstdio>
using namespace std;
//采药的时间 T
int w[110];//物品的time,
int v[110];//物品对应的待加
//M为物品的个数
int main()
{
int T, M;
scanf("%d%d", &T, &M);
for(int i=0; i<M; i++)
scanf("%d%d", &w[i], &v[i]);
int m[110][110] = {0};
for(int j=0;j<=T; j++)
{
if(j<w[M-1])
m[M-1][j] = 0;
else
m[M-1][j] = v[M-1];
}
for(int i=M-2; i>=0; i--)
{
for(int j=0; j<=T; j++)
{
if(j<w[i])
m[i][j] = m[i+1][j];
else
m[i][j] = max(m[i+1][j], m[i+1][j-w[i]]+v[i]);
}
}
int ans = 0;
for(int i=0; i<M; i++)
{
for(int j=0; j<=T; j++)
{
ans = max(ans, m[i][j]);
}
}
printf("%d\n", ans);
return 0;
}
/*
70 3
71 100
69 1
1 2
*/
相关文章推荐
- 三维建模中shape of silhouette 的简要理解
- 嵌入式开发第11天 (linux-c 环境搭建,命令)
- tomcat配置文件server.xml详解
- js替换字符串中所有/全部空格
- ScrollView使用技巧之实现滑动遮盖ImageView(View)
- 【操作系统】输入输出系统(下下)-思维导图0.0
- 【ANSI转UTF-8】用iconv命令解决Mac/Linux下编码问题
- Box of bricks 堆积木
- 频谱仪使用VS示波器使用
- Hibernate灵活查询
- 代理模式,简单(静态)工厂模式,单例模式,模板方法模式个人理解
- vb.net ファイル圧縮・解凍など
- HDU 1234 开门人和关门人
- z-score
- TP QQ 微信 微博登录
- codevs 1690 开关灯 线段树区间更新 区间查询Lazy
- oralce存储过程双循环
- Android简介
- 如何让MySQL 数据库支持中文
- 15.行属性标签在包裹文字使用时,不需要设置宽高