每个bin最多只能放两个,所以最佳的贪心策略是从大的开始放,如果有空间放第二个,尽量放最大的。

 #include <bits/stdc++.h>

 using namespace std;

 const int maxn =  + ;

 int t;

 int n,l;

 int a[maxn];

 int b[maxn];

 int flag[maxn];

 void solve(){
int cnt = ;
memset(flag, , sizeof(flag));
for(int i = ; i <= n; ++i){
if(flag[i]){
continue;
} else {
++cnt;
flag[i] = ;
int temp = l - a[i];
int loc = upper_bound(b+, b++n, temp) - b;
if(loc == +n) loc = n;
for(int j = loc; j >= ; --j){
if(!flag[n-j+] && b[j] <= temp){
flag[n-j+] = ;
break;
}
}
}
}
printf("%d\n",cnt);
if(t) printf("\n");
} bool cmp(int a, int b){
return a > b;
} int main(){
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&l);
for(int i = ; i <= n; ++i){
scanf("%d",&a[i]);
b[i] = a[i];
}
if(l == ){
printf("0\n");
continue;
}
sort(a+, a++n, cmp);
sort(b+, b++n);
solve();
}
}

Uva1149的更多相关文章

  1. 8-1 binpacking uva1149(贪心)

    题意:给定N个物品的重量Li  背包的容量M 同时要求每个背包最多装两个物品 求至少要多少个背包才能装下所有物品 简单贪心  注意输出: #include<bits/stdc++.h> u ...

  2. UVA-1149 Bin Packing (贪心)

    题目大意:给定n个物品的重量,无限个容量为m的箱子,每个箱子最多装两个物品,要把所有的物品都装下,最少需要多少个箱子. 题目分析:贪心策略:每次将最重和最轻的两个物品放到一个箱子里,如果装不下,则将最 ...

  3. 【题解】「UVA1149」装箱 Bin Packing

    做法显然:贪心,但是怎么贪? 首先从大到小或从小到大排序,窝这次是从大到小排,这样更容易理解(从小到大更方变) 然后设置两个变量 front 和 after 作为前指针和后指针. 循环判断: 当前后两 ...

  4. UVa 1149 装箱

    https://vjudge.net/problem/UVA-1149 题意:给定N个物品的重量和背包的容量,同时要求每个背包最多装两个物品.求至少需要的背包数. 思路:很简单的贪心.每次将最轻的和最 ...

随机推荐

  1. @@cursor_rows变量解析

    刚刚看了@@curosr_rows这个全局变量,发现这个变量挺有意思.要懂得这个变量的意义,基本上牵扯到cursor一些比较容易忽视的内容. @@cursor_rows是用来记录当前游标的数量,也就从 ...

  2. 「LOJ#10050」「一本通 2.3 例 2」The XOR Largest Pair (Trie

    题目描述 在给定的 $N$ 个整数 $A_1,A_2,A_3...A_n$ 中选出两个进行异或运算,得到的结果最大是多少? 输入格式 第一行一个整数$N$. 第二行$N$个整数$A_i$. 输出格式 ...

  3. nginx uwsgi wsgi django 这些东西究竟是什么关系

    有太多的文章告诉我们nginx uwsgi django 这些东西怎么用了,太多的人知道这些东西的怎么使用,怎么配置,怎么优化,但是还是有一部分人比如我这种水货不知道这些东西到底是啥,为啥一个项目的发 ...

  4. 一个Web结合Mybatis项目

    需要引入apache.commons.dbcp-1.2.2.osgi.jar以及org.apache.commons.pool-1.5.3.jar用来提供JDBC的访问: 需要org.springfr ...

  5. Send Code to evernote by my specify notebook

    #coding:utf-8 import sys sys.path.append("lib") import thrift.protocol.TBinaryProtocol as ...

  6. orcal数据库得连接必须用localhost,url中不要用127.0.0.1,不然无法连接

    orcal数据库得连接必须用localhost,url中不要用127.0.0.1,不然无法连接,

  7. win10系统的简单优化

    1.关闭自带杀毒软件Windows Defender操作简要:在gpedit.msc 组策略-计算机管理——>管理模板——>windows组件——>windows defender ...

  8. bootstrap插件使用

    首先,针对导航栏(单页面导航插件(缓慢跳转)) 引入插件:jquery.singlePageNav.min.js   下载链接:http://pan.baidu.com/s/1jHBaQxg  密码: ...

  9. Queue——C#浅谈

    1.Queue定义 System.Collections.Queue类表示对象的先进先出集合,存储在 Queue(队列) 中的对象在一端插入,从另一端移除. 2.优点 1.能对集合进行顺序处理(先进先 ...

  10. 大内存电脑在vbox安装linux报错

    问题描述: 1.机器:Linux主机,特别是主机为大内存,比如: 4G内存的使用pae内核的Ubuntu系统的thinkpad电脑. 2.情况:使用VirtualBox安装Linux系统时,比如:通过 ...