题意:

给出n,m,代表微波炉有n个button,要求达到总时间为m

然后给出n个数。代表n个button能添加的时间,问最少几步,可以使得按出的总时间大于等于要求的时间,而且相差最小

输出最小的步数与相差的最小值

要求,当总时间小于0时。时间为0,大于3600时,时间为3600


思路:

直接暴力BFS。用VIS记录步数


#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <bitset>
#include <algorithm>
#include <climits>
using namespace std;#define ls 2*i
#define rs 2*i+1
#define UP(i,x,y) for(i=x;i<=y;i++)
#define DOWN(i,x,y) for(i=x;i>=y;i--)
#define MEM(a,x) memset(a,x,sizeof(a))
#define W(a) while(a)
#define gcd(a,b) __gcd(a,b)
#define LL long long
#define ULL unsigned long long
#define N 100005
#define INF 0x3f3f3f3f
#define EXP 1e-8
#define rank rank1
const int mod = 1000000007;int t,n,sum;
int a[20];
int vis[N];int main()
{int i,j,k;scanf("%d",&t);while(t--){scanf("%d%d",&n,&sum);for(i = 0; i<n; i++)scanf("%d",&a[i]);MEM(vis,INF);queue<int> Q;Q.push(0);vis[0] = 0;while(!Q.empty()){int x = Q.front();Q.pop();for(i = 0; i<n; i++){int next = x+a[i];if(next<0) next = 0;if(next>3600) next = 3600;if(vis[next]<=vis[x]+1) continue;vis[next] = vis[x]+1;Q.push(next);}}for(i = sum; i<=3600; i++){if(vis[i]!=INF){break;}}printf("%d %d\n",vis[i],i-sum);}return 0;
}

转载于:https://www.cnblogs.com/wzzkaifa/p/6971329.html

BAPC2014 Bamp;amp;HUNNU11582:Button Bashing(BFS)相关推荐

  1. 翻译:职业游戏玩家的生活是什么样的?The life of a pro-gamer

    分享一篇很有趣的文章:职业游戏玩家的生活是什么样的?The life of a pro-gamer 这是BBC随身英语Take Away English最新发布的一篇文章,分享了职业电竞玩家的日常,喜 ...

  2. 【CodeForces - 520B】Two Buttons (bfs或dp或时光倒流,trick)

    题干: Vasya has found a strange device. On the front panel of a device there are: a red button, a blue ...

  3. HDU-ACM程序设计——BFS(宽度优先搜索)

          我先讲讲自己对BFS的看法吧.对一个二叉树来说,宽度优先的意思就是遍历树的时候先一边到另一边(左右)再从上到下. 比如这棵二叉树宽度优先遍历得到5 1 72 4 6 3很明显,这里出现了三 ...

  4. Codeforces 676D Theseus and labyrinth 模拟+bfs

    D. Theseus and labyrinth time limit per test 3 seconds memory limit per test 256 megabytes input sta ...

  5. 深搜广搜专题【DFS】【BFS】

    深搜广搜专题 又是一年专题时,这次的专题是BFS和DFS,我们刚加入acm时的噩梦,然而现在已经写起来很舒服了(OS:那你还A不出题?) BFS和DFS都是通过对所有的点进行遍历来得到结果的,是一种比 ...

  6. HDU-1459.非常可乐(BFS )

    这道题TLE了很多次,原来一直以为将数字化为最简可以让运算更快,但是去了简化之后才发现,真正耗时的就是化简....还和队友学到了用状态少直接数组模拟刚就能过... 本题大意:给出可乐的体积v1,给出两 ...

  7. Android UI 统一修改Button控件的样式,以及其它系统控件的默认样式

    先介绍下修改原理:首先打开位于android.widget包下面的Button.java文件,这里有一句关键的代码如下: public Button(Context context, Attribut ...

  8. HDU1548:A strange lift(Dijkstra或BFS)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1548 题意:电梯每层有一个数,例如第n层有个数k, 那么这一层只能上k层或下k层,但是不能低于一层或高 ...

  9. HDU 1429 胜利大逃亡(续) (BFS+位压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

最新文章

  1. 如何使用 DSL 实现 DDD 的快速落地
  2. python语法基础学习-Python基础语法精心总结!看完都知道的可以往下继续学习了...
  3. mac terminal常用命令接触
  4. markdown 自用笔记
  5. 生活中常见物联网实例_物联网网关常见问题解答(一)
  6. C++ union 公共体
  7. 【转载】漏洞 CNVD-2017-36682 相关公告以及 JavaScript / 安卓开发者须知
  8. SNMP学习(2)——SNMP实战
  9. java Http请求工具类【post/get】
  10. proteus仿真+keil——>制作流水灯
  11. 软件测试之独步武林系列(一)
  12. vim的设置文档【我的】
  13. 测试环境Hosts设置
  14. Android 蓝牙 HFP sco 和esco链路的异同分析
  15. 匈牙利算法编程c语言,华为oj之素数伴侣---匈牙利算法
  16. 网卡VXLAN的offload技术介绍
  17. Spring之IOC自动装配
  18. 在贵州大数据峰会上,马云再次语出惊人!
  19. BaiduMap---百度地图官方Demo之OpenGL绘制功能(介绍如何使用OpenGL绘制在地图中进行绘制)
  20. 计算机密码忘记旗舰版7,电脑密码忘了怎么办win7旗舰版_w7旗舰版笔记本开机密码忘了如何解决...

热门文章

  1. 七天学习计划_c#_[2][3][4][5]委托、事件、委托与事件的区别、泛型委托、Func\Action\predicate
  2. linux vi 强制退出_linux的编辑大法
  3. php验证用户名密码是否为空,【后端开发】php验证用户名密码是否为空
  4. tightvnc viewer 传文件_TightVNC中文版下载_TightVNC viewer(远程控制软件)简体中文版下载【32位|64位】-华军软件园...
  5. 自学了python基础英语_Python自学路线图之Python基础自学
  6. bde oracle 商友的流程_bde oracle 商友的流程_BDE动态连接Oracle数据库
  7. python多久更新一次_Python Tkinter,每秒钟更新一次
  8. 数字断路器获得商用认证
  9. Java 启动线程并保持
  10. 关于邮件服务器的原理