思路:

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;
}

TYVJ 1340 折半暴搜+二分的更多相关文章

  1. P3067 [USACO12OPEN]平衡的奶牛群(折半暴搜)

    暴搜无疑.... 首先考虑纯暴搜...... 考虑每一个数: 选在左边集合 选在右边集合 不选 一共三种情况,用一个数组记录搜到的答案,所以暴搜是3^N的复杂度...直接死亡 于是讲折半暴搜.... ...

  2. P4799 [CEOI2015 Day2]世界冰球锦标赛(折半暴搜)

    题目很明确,不超过预算的方案数.两个直觉:1.暴搜2.dp 每个点两种状态,选或不选.... 1.可过20% 2.可过70% 正解:折半搜索(meet in the middle) 有点像以前的双向广 ...

  3. BZOJ 4800 折半暴搜

    思路: 把它拆成两半  分别搜一发 两部分分别排好序 用two-pointers扫一遍 就可以了. (读入也要用long long) //By SiriusRen #include <cstdi ...

  4. hdu 4400 离散化+二分+BFS(暴搜剪枝还超时的时候可以借鉴一下)

    Mines Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  5. 【BZOJ-3033】太鼓达人 欧拉图 + 暴搜

    3033: 太鼓达人 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 204  Solved: 154[Submit][Status][Discuss] ...

  6. c++20701除法(刘汝佳1、2册第七章,暴搜解决)

    20701除法 难度级别: B: 编程语言:不限:运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述     输入正整数n,按从小到大的顺序输出所有 ...

  7. Codeforces Round #238 (Div. 2) D. Toy Sum 暴搜

    题目链接: 题目 D. Toy Sum time limit per test:1 second memory limit per test:256 megabytes 问题描述 Little Chr ...

  8. poj 3080 Blue Jeans(水题 暴搜)

    题目:http://poj.org/problem?id=3080 水题,暴搜 #include <iostream> #include<cstdio> #include< ...

  9. Sicily1317-Sudoku-位运算暴搜

    最终代码地址:https://github.com/laiy/Datastructure-Algorithm/blob/master/sicily/1317.c 这题博主刷了1天,不是为了做出来,AC ...

随机推荐

  1. poj_3468线段树成段更新求区间和

    #include<iostream> #include<string.h> #include<cstdio> long long num[100010]; usin ...

  2. bzoj3444: 最后的晚餐(并查集+组合数学)

    3444: 最后的晚餐 题目:传送门 题解: 考虑有解的情况: 直接上并查集,同一个联通块里的人一定要坐在一起的.不难发现其实对于每个联通块最多就只有两种排列方式,那就直接把大于等于两个人的联通块先去 ...

  3. 火狐访问IIS出现404,而Chrome可以正常访问

    需要在web.config中的handlers中添加如下节点,保存之后,需要重启电脑. <remove name="ExtensionlessUrlHandler-Integrated ...

  4. kibana智能检索发送多次_msearch —— 配置index pattern,同时设置时间段,就知道到底是在哪些索引里去查找数据了

    kibanasite/elasticsearch/log-*/_field_stats?level=indices      返回: {"_shards":{"total ...

  5. [JZOJ NOIP2018模拟10.21]

    考试之前我刚刚领略到了特判的重要性,没想到T2的两个子任务还是写挂了,丢了20分 考试的感觉不行,一路打的都是暴力,正解的思路想到一半就断了推不下去 T1:逛公园 题目链接: https://jzoj ...

  6. 读取XML字符串到临时表

    DECLARE @hdoc int DECLARE @doc xml SET @doc = '<CityValueSet> <CityItem> <CityId>2 ...

  7. mysql 百万级查询优化

    关于mysql处理百万级以上的数据时如何提高其查询速度的方法 最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法. 由于在参与的实际项目中发现当mysql表的数 ...

  8. vuex 基本入门和使用(三)-关于 mutation

    vuex 基本入门和使用(三)-关于 mutation vuex 版本为^2.3.1,按照我自己的理解来整理vuex. 关于 mutation 这里应该很好理解. 更改 Vuex 的 store 中的 ...

  9. Vue组件使用基础

    这篇博文用来记录 .vue 组件的使用方法. 可以把组件代码按照 template.style.script 的拆分方式,放置到对应的 .vue 文件中. 模板(template).初始数据(data ...

  10. python 正则表达式与re模块

    一.正则表达式 用途 用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. #### 简单地说 就是用于字符串匹配的 字符组 在 ...