NYOJ背包问题
#include <stdio.h>
struct group{ int value;
int weight; };
void Sort(group bag[],int num)
{
int i,j;
group temp;
for(i=; i<=num-; i++)
for(j=; j<=num-i; j++)
if(bag[j+].value>bag[j].value)
{
temp=bag[j];
bag[j]=bag[j+];
bag[j+]=temp;
}
}
int main()
{
int i,n,num,capacity,sum,m;
group bag[];
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&num,&capacity);
for(i=; i<=num; i++)
scanf("%d%d",&bag[i].value,&bag[i].weight);
Sort(bag,num);
m=sum=;
for(i=; i<=num; i++)
{
if(m+bag[i].weight<=capacity)
{
m+=bag[i].weight;
sum+=bag[i].weight*bag[i].value;
}
else
{
sum+=bag[i].value*(capacity-m); //因为m+bag[i].weight>capacity,所以bag[i].weight>capacity-m,不必考虑物品份数不够
break;
}
}
printf("%d\n",sum);
}
return ;
}
思想是怎样使放入的物体的价值总和最大。
一开始想复杂,以为不仅要贪心,还要考虑最适,纠结半天。。
看了看别人的代码,明白。可以这样理解,其实可以把这些要装入的物品分解成一根根细线(3D的样子~~,重量可以分割),然后把它们填入一个圆筒里,这样你不会先装入价值小的,而是努力把价值大的细线填入,这便是单纯的贪心了。 直到填满或物品都放进去。
NYOJ背包问题的更多相关文章
- nyoj 背包问题
背包问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w< ...
- nyoj 106背包问题(贪心专题)
背包问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w< ...
- NYOJ 106背包问题
http://acm.nyist.net/JudgeOnline/problem.php?pid=106 背包问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现 ...
- nyoj 106 背包问题
点击打开链接 背包问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v ...
- 背包问题--nyoj题目106
背包问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w< ...
- nyoj 49-开心的小明(动态规划, 0-1背包问题)
49-开心的小明 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:7 submit:11 题目描述: 小明今天很开心,家里购置的新房就要领钥匙了,新房 ...
- NYOJ 49 开心的小明(01背包问题)
时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 小明今天非常开心.家里购置的新房就要领钥匙了,新房里有一间他自己专用的非常宽敞的房间.更让他高兴的是.妈妈昨天对他说: ...
- 拦截导弹 (NYOJ—79) 最长字串问题 (NYOJ—17)
这是到动态规划的题目,属于有顺序的0 1 背包问题: 代码: #include<stdio.h> #include<string.h> ][]; //d[i][j] ]; in ...
- NYOJ 1007
在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...
随机推荐
- 创建Thread类的子类
package unit8; public class MyThreadTest { public static void main(String[] args) { MyThread t1 = ne ...
- java读取properties配置文件信息
一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...
- kafka基本原理学习
下载安装地址:http://kafka.apache.org/downloads.html 原文链接:http://www.jasongj.com/2015/01/02/Kafka深度解析 Kafk ...
- css/js(工作中遇到的问题)-3
设置宽高比 使用padding/margin-top/bottom; 设置出教准确的自适应布局; 用于预加载图片; 关于数据库设置 添加extra对象用于扩展; 添加type类型; 对于字体 使用百分 ...
- 关于window.showModalDialog的一些配置
关于window.showModalDialog的一些配置 一.window.showModalDialog的滚动条 其实纵向滚动条很好去掉,难办的就是横向滚动条.在Firefox下如果window. ...
- [bzoj1071]组队[单调指针乱搞]
这道题也很感人,主要改了比较久的时间... bzoj第一页的题,居然只过了五百多个人,(我是第512,orzliyicheng是513) 代码不长,但是细节搞了很久,主要sort写错了,晕... 首先 ...
- LCS POJ 1458 Common Subsequence
题目传送门 题意:输出两字符串的最长公共子序列长度 分析:LCS(Longest Common Subsequence)裸题.状态转移方程:dp[i+1][j+1] = dp[i][j] + 1; ( ...
- HTML5中createPattern()
定义和用法 createPattern() 方法在指定的方向内重复指定的元素. 元素可以是图片.视频,或者其他 <canvas> 元素. 被重复的元素可用于绘制/填充矩形.圆形或线条等等. ...
- ZOJ3201 Tree of Tree(树形DP)
题目大概求一棵树中大小为k的子树的最大权和. dp[u][k]表示以u为根的子树中包含u结点的大小为k的子树的最大权和,然后树上背包转移转移很容易.. #include<cstdio> # ...
- HDU3870 Catch the Theves(平面图最小割转最短路)
题目大概说给一个n×n的方格,边有权值,问从求(1,1)到(n,n)的最小割. 点达到了160000个,直接最大流不好.这题的图是平面图,求最小割可以转化成求其对偶图的最短路,来更高效地求解: 首先源 ...