博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
北大ACM——2782,Bin Packing(贪心)
阅读量:4049 次
发布时间:2019-05-25

本文共 711 字,大约阅读时间需要 2 分钟。

题意:有n个垃圾,每件垃圾都有一个大小 l[i],另有若干个垃圾桶,每个垃圾桶的大小均为 l,求最少需要多少个垃圾桶装满n个垃圾。要求:每个垃圾桶最多只能装2个垃圾,且垃圾大小之和不能超过l。输入时确保 l[i]<=l 。

分析:很明显这是一个乘船问题(终于遇见裸的题了诶),而且还更为简单一些,因为它确保了l[i]<=l。

伪代码如下:
输入n,l
输入a[n];
a[n]从小到大排序;
int sum=0,i=0,j=n-1;
while(i<=j) //注意,一定要有=号,否则某些情况会疏漏一个数据
{
if(a[i]+a[j]<=l){
i++;j- -;
sum++;
}
else{
j- -;
sum++;
}
}输出sum

代码如下:

#include
#include
using namespace std;int a[100005];int main() { int n,l;//while(1){ int i,j,sum=0; scanf("%d%d",&n,&l); for(i=0;i<=n-1;i++) scanf("%d",&a[i]); sort(a,a+n);//printf("\n");// for(i=0;i<=n-1;i++) printf("%d\n",a[i]); i=0;j=n-1; while(i<=j) { if(a[i]+a[j]<=l) { i++;j--; sum++; } else { j--; sum++; } } printf("%d\n",sum);//} return 0;}

转载地址:http://cfdci.baihongyu.com/

你可能感兴趣的文章
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Candy(python)
查看>>
【leetcode】Clone Graph(python)
查看>>
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>
java自定义容器排序的两种方法
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
AngularJS2中最基本的文件说明
查看>>