NYOJ 49 开心的小明
来源:互联网 发布:deepin 知乎 编辑:程序博客网 时间:2024/06/11 17:44
点击打开链接
很多题都可以通过转化,转化为我们比较熟悉的模型,比如说这个题,我们就可以转化为0-1背包处理。把n当作背包容积,m当作物品个数,v当作每种物品的体积,p*v当作每种物品的价值,这样,求物品的价格与重要度乘积的总和最大值,就相当于求背包的最大价值,就可以用0-1背包的方法来解决问题。所以,遇到问题一定要多想。
AC代码:
#include<stdio.h>
#include<string.h>
#define max(a,b) a>b?a:b;
struct nn
{
int v,p; //v是价格,p是重要度
}a[26];
int dp[30000];
int main()
{
int i,j,n,t,m;
scanf("%d",&t);
while(t--)
{
memset(dp,0,sizeof(dp));
scanf("%d%d",&n,&m);//n是钱数,m是物品个数
for(i=1;i<=m;i++)
{
scanf("%d%d",&a[i].v,&a[i].p);
for(j=n;j>=a[i].v;j--)
dp[j]=max(dp[j],dp[j-a[i].v]+a[i].p*a[i].v);
}
printf("%d\n",dp[n]);
}
return 0;
}
#include<string.h>
#define max(a,b) a>b?a:b;
struct nn
{
int v,p; //v是价格,p是重要度
}a[26];
int dp[30000];
int main()
{
int i,j,n,t,m;
scanf("%d",&t);
while(t--)
{
memset(dp,0,sizeof(dp));
scanf("%d%d",&n,&m);//n是钱数,m是物品个数
for(i=1;i<=m;i++)
{
scanf("%d%d",&a[i].v,&a[i].p);
for(j=n;j>=a[i].v;j--)
dp[j]=max(dp[j],dp[j-a[i].v]+a[i].p*a[i].v);
}
printf("%d\n",dp[n]);
}
return 0;
}
- NYOJ 49 开心的小明
- NYOJ 49 开心的小明
- NYOJ 49 开心的小明
- NYOJ 49 开心的小明
- nyoj-49-开心的小明
- NYOJ 49 开心的小明
- Nyoj 49 开心的小明
- NYOJ 49 【开心的小明】
- NYOJ 49 开心的小明
- NYOJ 49 开心的小明
- NYOJ-49 开心的小明
- nyoj-49 开心的小明
- NYOJ 49 开心的小明
- nyoj 49 开心的小明
- nyoj--49 开心的小明(dp)
- Nyoj 开心的小明49
- nyoj 49 开心的小明
- NYOJ 49 开心的小明
- ognl调用静态方法用法以及注意事项
- 1008 最短路
- leetcode 56: Word Search
- 从零开始学习VC++6.0之并口控制(第四课 直流电机启动)
- jQuery UI使用
- NYOJ 49 开心的小明
- 防止乱码情况
- 1009 最短路
- mysql性能及内存优化
- 2012 腾讯校招Web前端笔试的一道题,很值得怀念。。。
- MFC的CFileDialog和几个类之间的关系
- 玩转php变量
- HDU 2899 Strange fuction
- PHP 静态变量 变量函数 递归函数