思路:

1.

这 题 不卡常过不去啊……

(先加一个random_shuffle)

首先 我们可以折半 搜这一半可以到达的重量 sort一遍

然后搜另一半 对于路程中每一个解 我们可以二分前一半中加这个解最接近w的值,更新ans

剪枝:

对于第一次搜索 显然的剪枝:和不能大于w

对于第二次搜索 如果当前的解小于最大的remain 退出

我的搜索纯凭运气&数据…… 数据和w相差比较小就能过。

2.

LH大爷的思路(可惜T了…)(这题不卡数据是人?)

也是折半

然后二进制枚举每个选不选

s[i]表示

对于每个i s[i^ (1<< lowbit(i))]的值肯定是已知的。

s[i]=s[(i xor (1<<(f[i]-1)))]+a[f[i]]

sort一遍s

后面枚举 同理 二分同上…

然而t了。。

(感谢lydrainbowcat&LH大爷……)

//By SiriusRen
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
unsigned int n,w,a[66],half,maxx,ans=0x3fffffff;
unsigned int s[20000000],top;
inline void dfs(int x,int remain){
s[top++]=remain;
for(int i=x;i>=1;i--){
int t=remain-a[i];
if(t>=0)dfs(i-1,t);
}
}
inline void dfs2(int x,int tot){
if(s[top]>=tot){
int t=lower_bound(s,s+top,tot)-s,jy=s[t]-tot;
if(ans>jy)ans=jy;
for(int i=x;i>=half;i--)
dfs2(i-1,tot+a[i]);
}
}
int main(){
scanf("%d%d",&w,&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
half=(n+1)/2;
random_shuffle(a+1,a+1+n);
dfs(half,w);
sort(s,s+top);
half++;top--;
dfs2(n,0);
cout<<w-ans;
}

最新文章

  1. 【nodejs笔记4】搭建多人博客&lt;内含http请求的get post方法区别&gt;
  2. CSS控制表格(table)样式
  3. 浅谈T-SQL中的派生表和CTE
  4. Maven Java EE Configuration Problem 的完美解决办法
  5. android平台手电筒开发源代码
  6. bjfu1252 贪心
  7. BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划( dp)
  8. SQL点滴20—T-SQL中的排名函数
  9. Gulp安装使用教程
  10. php trim源码分析
  11. 关于一些基础的Java问题的解答(二)
  12. What is the best way to handle Invalid CSRF token found in the request when session times out in Spring security
  13. C# 《编写高质量代码改善建议》整理&amp;笔记 --(六)编码规范及习惯
  14. Kafka设计原理
  15. rabbitmq学习(三) —— 工作队列
  16. 配置Oracle E-Business Suite Integrated SOA Gateway Release 12.1.2/12.1.3
  17. 【IL】IL指令详解
  18. 使用InputStreamReader读入,使用OutputStreamWriter写出,将一首诗按行重写?
  19. LeetCode - Duplicate Emails
  20. 【递推】【组合数】【容斥原理】UVA - 11806 - Cheerleaders

热门文章

  1. C++的标准模板库STL中实现的数据结构之链表std::list的分析与使用
  2. sqlite学习笔记11:C语言中使用sqlite之删除记录
  3. MapReduce运行流程具体解释
  4. 使用docker搭建hadoop分布式集群
  5. 使用malloc分别分配2KB的空间,然后用realloc调整为6KB的内存空间,打印指针地址
  6. 【c++版数据结构】之顺序表的实现
  7. war包放入tomcat
  8. SparkSession - Spark SQL 的 入口
  9. 前端的console.log的效果写法
  10. 静态构造函数c# 静态块java initallize oc