题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1673

题意:

  有n个砝码(n <= 1000),重量为w[i]。

  你要从中选择一些砝码,使得这些砝码的总重量最大,但不超过c。

  w[i]按递增顺序给出,并且保证w[i] >= w[i-1]+w[i-2] (i >= 3)。

题解:

  dfs。

  因为w[i] >= w[i-1]+w[i-2],所以其实n最大只有45左右(类似斐波那契数列)。

  优化:

    (1)启发式:优先选砝码(不跳过),并且优先选重量大的砝码,尽早更新ans。

    (2)A*搜索:如果当前tot + 剩下砝码的总重(前缀和) < ans,则return。

AC Code:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 1005 using namespace std; int n,c;
int ans=;
int w[MAX_N];
long long sum[MAX_N]; void dfs(int col,int tot)
{
if(tot>c) return;
ans=max(ans,tot);
if(col>n) return;
if(tot+sum[n]-sum[col-]<=ans) return;
dfs(col+,tot+w[col]);
dfs(col+,tot);
} void read()
{
cin>>n>>c;
for(int i=n;i>=;i--)
{
cin>>w[i];
}
} void solve()
{
sum[]=;
for(int i=;i<=n;i++)
{
sum[i]=sum[i-]+w[i];
}
dfs(,);
} void print()
{
cout<<ans<<endl;
} int main()
{
read();
solve();
print();
}

BZOJ 1673 [Usaco2005 Dec]Scales 天平:dfs 启发式搜索 A*搜索的更多相关文章

  1. bzoj 1673: [Usaco2005 Dec]Scales 天平【dfs】

    真是神奇 根据斐波那契数列,这个a[i]<=c的最大的i<=45,所以直接搜索即可 #include<iostream> #include<cstdio> usin ...

  2. bzoj:1673 [Usaco2005 Dec]Scales 天平

    Description Farmer John has a balance for weighing the cows. He also has a set of N (1 <= N <= ...

  3. 【BZOJ】1673: [Usaco2005 Dec]Scales 天平(dfs背包)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1673 bzoj翻译过来的c<=230不忍吐槽......................... ...

  4. bzoj1673[Usaco2005 Dec]Scales 天平*

    bzoj1673[Usaco2005 Dec]Scales 天平 题意: n个砝码,每个砝码重量大于前两个砝码质量和,天平承重为c,求天平上最多可放多种的砝码.n≤1000,c≤2^30. 题解: 斐 ...

  5. [Usaco2005 Dec]Scales 天平

    题目描述 约翰有一架用来称牛的体重的天平.与之配套的是N(1≤N≤1000)个已知质量的砝码(所有砝码质量的数值都在31位二进制内).每次称牛时,他都把某头奶牛安置在天平的某一边,然后往天平另一边加砝 ...

  6. BZOJ 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚

    题目 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec  Memory Limit: 64 MB Description Farm ...

  7. BZOJ 1715: [Usaco2006 Dec]Wormholes 虫洞 DFS版SPFA判负环

    Description John在他的农场中闲逛时发现了许多虫洞.虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前).John的每个农场有M条小路(无向边)连接着N ...

  8. BZOJ 1729: [Usaco2005 dec]Cow Patterns 牛的模式匹配

    Description 约翰的N(1≤N≤100000)只奶牛中出现了K(1≤K≤25000)只爱惹麻烦的坏蛋.奶牛们按一定的顺序排队的时候,这些坏蛋总会站在一起.为了找出这些坏蛋,约翰让他的奶牛排好 ...

  9. BZOJ 1671: [Usaco2005 Dec]Knights of Ni 骑士 (bfs)

    题目: https://www.lydsy.com/JudgeOnline/problem.php?id=1671 题解: 按题意分别从贝茜和骑士bfs然后meet_in_middle.. 把一个逗号 ...

随机推荐

  1. PHP提权之异步执行

    在服务器上都会定时运行一些脚本以完成周期性的任务. 而这些脚本往往是以root权限启动的, 替换或者改变其中的内容就可以完成提权.而今天在这要讲解的就是php提权中的异步执行方法. 在php中一般大家 ...

  2. kill -signal

    1. SIGHUP 启动被终止的进程,可让该PID重新读取配置文件,类似于重启服务 对应的数字为1 9.SIGTERM 以正常的结束进程来终止进程 15.SIGSTOP 暂停一个进程相当于crtl+z

  3. ehcache缓存刷新问题

    ehcache可以设置时间来定时刷新缓存,但是这个只是清空值,key依旧保存着. 只有你第一次利用key获取值,key才会释放.

  4. windows下使用Eclipse编译执行MapReduce程序 Hadoop2.6.0/Ubuntu

    一.环境介绍 宿主机:windows8 虚拟机:Ubuntu14.04 hadoop2.6伪分布:搭建教程http://blog.csdn.net/gamer_gyt/article/details/ ...

  5. Android Handler 异步消息处理机制的妙用 创建强大的图片载入类

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38476887 ,本文出自[张鸿洋的博客] 近期创建了一个群.方便大家交流,群号: ...

  6. GIT简单使用——私人库篇

    1.生成公钥公钥是远程库识别您的用户身份的一种认证方式,通过公钥,您可以将本地git项目与远程库建立联系,然后您就可以很方便的将本地代码上传到远程库,或者将远程库代码下载到本地了.$ ssh-keyg ...

  7. 10-客户端防表单重复提交和服务器端session防表单重复提交

    /****************************************************DoFormServlet********************************** ...

  8. Zend API:深入 PHP 内核

    Introduction Those who know don't talk. Those who talk don't know. Sometimes, PHP "as is" ...

  9. css选择器参考手册

    选择器 例子 例子描述 CSS .class .intro 选择 class="intro" 的所有元素. 1 #id #firstname 选择 id="firstna ...

  10. android 集成QQ互联 (登录,分享)

    参考:http://blog.csdn.net/syz8742874/article/details/39271117 http://blog.csdn.net/woblog/article/deta ...