题解:搜索 meet in the middle

先搜一半,假设某个状态的体积是p,那么就要从另一半里找到体积小于

等于v-p 价值最大的状态。二分+前缀和。

代码:不会前缀和,暴力瞎写的。没有评测的地方..=^=

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std; int an,bn,n,m,p,q,w[],c[];
LL ans;
struct WP{
LL w,c;
bool operator < (const WP &a) const{
return w<a.w;
}
}wp[]; LL maxx(LL a,LL b){
return a>=b?a:b;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d%d",&w[i],&c[i]);
an=n/;bn=n-an;
for(int st=;st<(<<an);st++){
p++;
for(int i=;i<an;i++){
if((st>>i)&){
wp[p].w+=w[i+];
wp[p].c+=c[i+];
}
}
}
sort(wp+,wp+p+);
for(int st=;st<(<<bn);st++){
WP all;all.w=;all.c=;//清为0
for(int i=;i<bn;i++){
if((st>>i)&){
all.w+=w[n-i];
all.c+=c[n-i];
}
}
WP gg;gg.w=m-all.w;gg.c=;
int cc=upper_bound(wp+,wp+p+,gg)-wp;
// cout<<all.w<<" " <<gg.w<<" "<<cc<<endl;
for(int i=;i<cc;i++)
ans=maxx(ans,all.c+wp[i].c);
}
printf("%lld\n",ans);
return ;
}

背包搜索--LH的更多相关文章

  1. Dividing (多重背包 搜索)

    / 第一个多重背包题目 真的不理解二进制优化 /http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?cid=10594&pid=1 ...

  2. Ignatius and the Princess III(方案背包+搜索)

    就是问你,n这个数可以被多少种方案组成. 比如: 算是,方案+完全背包的模板题了. #include<iostream> #include<cstring> using nam ...

  3. 洛谷 P1964 【mc生存】卖东西

    P1964 [mc生存]卖东西 题目背景 服务器好好玩 题目描述 lcy0x1去服务器的系统商店卖东西. 一个人的背包有21格. 一开始他的背包里有m件不同的物品(不能卖). 他要卖n种物品,每种物品 ...

  4. 【u204】高级砝码称重

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 现有n个砝码,重量分别为a1,a2,a3,--,an,在去掉m个砝码后,问最多能称量出多少不同的重量( ...

  5. poj 3628 (搜索or背包)

    好久没看背包题目了!!!生疏了!!!! 这题是背包题!!!不过对于这题,解决方法还是搜索省时!!! 题意:第一行给你一个N和VV,接下来N行,每行一个数,求得是任选N个数组合求和,求组合的和大于VV而 ...

  6. Bone Collector(01背包+记忆化搜索)

    Bone Collector Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Tota ...

  7. HDU 5887 Herbs Gathering(搜索求01背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=5887 题意: 容量很大的01背包. 思路: 因为这道题目背包容量比较大,所以用dp是行不通的.所以得用搜索来做, ...

  8. Unity 背包道具搜索

    因为背包有很多道具,用户要根据不同需要搜索出不同的道具.  道具的属性有非常居多,游戏快开发完毕的时候,突然发现ItemManager类里面几乎每一个搜索方法都有一个foreach循环, 循环里面因为 ...

  9. nyoj 456——邮票分你一半——————【背包思想搜索】

    邮票分你一半 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述      小珂最近收集了些邮票,他想把其中的一些给他的好朋友小明.每张邮票上都有分值,他们想把这些邮票分 ...

随机推荐

  1. 旋转卡壳求两个凸包最近距离poj3608

    #include <iostream> #include <cmath> #include <vector> #include <string.h> # ...

  2. 如何基于EasyDSS体系的全套SDK完成各种场景下的视频应用需求

    需求背景 回顾EasyDSS的发展过程,基本上保持的是先局部后系统.先组件后平台的发展方式,一步一步夯实每一个细节功能点,从最基础.最兼容的音视频数据的拉流获取,到高效的.全兼容的数据推流,再到流媒体 ...

  3. windowsphone8.1学习笔记之Toast通知

    熟悉或者了解wp系统的人都知道wp的Toast,Toast(吐司)通知是在屏幕最顶上弹出来的提示框,它专为与锁屏提醒.磁贴通知和应用中UI结合使用而设计,但它不是MessageDialog.说简单点它 ...

  4. nginx中使用waf防火墙

    1.安装依赖 yum install -y readline-devel ncurses-devel 2.安装Lua # .tar.gz # cd lua- # make linux # make i ...

  5. csv文件的格式

    csv, comma separated values csv是一种纯文本文件. csv文件由任意数目的记录构成,记录间以换行符分割,每条记录由字段构成,字段间以逗号作为分隔符. 如果字段中有逗号,那 ...

  6. spider_action

    spider from mobile to mobile to mobile from selenium import webdriver from selenium.webdriver.chrome ...

  7. python(pytest)+allure+jenkins 实现接口自动化的思路

    效果图镇楼: 上述各模块作用: python(pytest): 1:用于读测试用例(本次用例写在csv文件中) 2:环境配置相关 3:提取1中的测试数据,组成请求体 4:发送请求 5:获取结果 6:断 ...

  8. android 半透明弹窗

    <style name="edit_AlertDialog_style" parent="@android:style/Theme.Dialog"> ...

  9. antd-mobile的例子--cnode

    antd-mobile    简单的例子 预览地址 https://shenggen1987.github.io/antd-mobile-roadhog/#/crm/pages/users githu ...

  10. 在Nginx中做负载均衡配置的实例讲解

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法. 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某 ...