搜索专题:Balloons


这道题一看与时间有关,第一想到的就是BFS,定义一个状态,包含每一个状态的剩余气球数,已经进行的时间和每一个志愿者上一次吹气球的时间;
每一次状态转换时,检查是否有没有使用的志愿者,或者是已经休息结束可以进行下一轮吹气球的志愿者,如果没有,就将进行的时间加一,进入下一个状态;第一次写的code超时,主要是没考虑最优结果,在还有志愿者可以使用的时候没有使用,而是又入一次队,导致无形中增加了无数的冗余状态;
代码如下:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue> using namespace std;
const int N = 10 + 5;
int per[10][2],m,n;///Ai,Bi
typedef struct node{ //定义一个状态
int step,left;
int start[N];
node(){memset(start,-1,sizeof(start));}//没有使用的志愿者标记为-1
bool operator < (const node x)const {
return step > x.step; //最小耗时优先拓展
}
}Node; int BFS(){
priority_queue<Node> Q;
Node t,s;
bool can_updata;
t.step = 0;
t.left = m;
Q.push(t);
while(!Q.empty()){
t = Q.top();Q.pop();
if(t.left <=0 ) return t.step;
can_updata = false;
for(int i=0;i<n;i++){ //如果有没有使用的志愿者或有可以继续工作的志愿者则添加新状态
if(t.start[i]<0 || t.step - t.start[i] >= per[i][1]){
can_updata = true;//是否更新标志
s = t;
s.left = t.left - per[i][0];
s.step = t.step + 1;
s.start[i] = s.step;
Q.push(s);
}
}
if(!can_updata){//如果全部志愿者还在休息,则时间加1
s = t;
s.step = t.step + 1;
Q.push(s);
} }
return -1;
}
int main(){
scanf("%d %d",&m,&n);
for(int i=0;i<n;i++)
scanf("%d %d",&per[i][0],&per[i][1]);
printf("%d\n",BFS());
}
//如有错误,还请各位指出

搜索专题:Balloons的更多相关文章

  1. HDU(搜索专题) 1000 N皇后问题(深度优先搜索DFS)解题报告

    前几天一直在忙一些事情,所以一直没来得及开始这个搜索专题的训练,今天做了下这个专题的第一题,皇后问题在我没有开始接受Axie的算法低强度训练前,就早有耳闻了,但一直不知道是什么类型的题目,今天一看,原 ...

  2. NOIP2018提高组金牌训练营——搜索专题

    NOIP2018提高组金牌训练营——搜索专题 1416 两点 福克斯在玩一款手机解迷游戏,这个游戏叫做”两点”.基础级别的时候是在一个n×m单元上玩的.像这样: 每一个单元有包含一个有色点.我们将用不 ...

  3. 2014 UESTC暑前集训搜索专题解题报告

    A.解救小Q BFS.每次到达一个状态时看是否是在传送阵的一点上,是则传送到另一点即可. 代码: #include <iostream> #include <cstdio> # ...

  4. 【PHP高效搜索专题(2)】sphinx&coreseek在PHP程序中的应用实例

    PHP可以通过三种途径来调用sphinx 通过Sphinx官方提供的API接口(接口有Python,Java,Php三种版本) 通过安装SphinxSE,然后创建一个中介sphinxSE类型的表,再通 ...

  5. 【PHP高效搜索专题(1)】sphinx&Coreseek的介绍与安装

    我们已经知道mysql中带有"%keyword%"条件的sql是不走索引的,而不走索引的sql在大数据量+大并发量的时候,不仅效率极慢还很有可能让数据库崩溃.那我们如何通过某些关键 ...

  6. 2015 UESTC 搜索专题F题 Eight Puzzle 爆搜

    Eight Puzzle Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 ...

  7. 2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索

    邱老师降临小行星 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Des ...

  8. 蓝桥杯dfs搜索专题

    2018激光样式 #include<bits/stdc++.h> using namespace std; /* dfs(i) 第i个激光机器 有两种选择:vis[i-1] == 0 时 ...

  9. 搜索专题:问题 E: 挑战ACM迷宫

    这是往年校赛的一道题,最开始做这道题的时候还没有系统的学习过搜索,用了C语言学的回溯法尝试,毫无疑问的TLE: 学习了DFS之后,自己的剪枝功力不够,又是TLE,最后学了BFS之后,哇,终于做出来了, ...

随机推荐

  1. 互联网_http协议

    一.定义 http协议叫做超文本传输协议,是从web服务器传输超文本到本地浏览器的协议. 二.特征 1.无连接:即每次连接仅处理一个请求,服务器处理完客户的请求,并收到客户端的响应后,即断开连接.采用 ...

  2. Concurrent包里的其他东西:ArrayBlockingQueue、CountDownLatch等等。

    1:本例介绍一个特殊的队列:BlockingQueue,如果BlockingQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会 ...

  3. 胜利点20191010-6 alpha week 1/2 Scrum立会报告+燃尽图 04

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/8749 一.小组情况组长:贺敬文组员:彭思雨 王志文 位军营 杨萍队名:胜 ...

  4. 后盾网lavarel视频项目---图片上传

    后盾网lavarel视频项目---图片上传 一.总结 一句话总结: 前端还是普通的前端操作,前端上传图片的地址就是图片上传的路由,后端代码也很简单 public function uploader(R ...

  5. 【JVM】jstack 查询占用最大资源线程|排查死循环等

    jstack 应用 首先通过:ps -ef|grep java 得到java pid 查看哪个线程占用最多资源: 找出该进程内最耗费CPU的线程,可以使用ps -Lfp pid或者ps -mp pid ...

  6. Charles解析https,unknown错误解决办法

    之前一直使用Charles,抓包https的没有问题,enable ssl的时候出现unknown消息,disable ssl的时候出现乱码,解决办法: 在设置–>通用–>关于本机–> ...

  7. 关于 LDTP 操纵 windows 控件。

    LDTP doc:  https://ldtp.freedesktop.org/user-doc/ 对于 web 自动化,我们用 Selenium, 但是对于 windows 控件,我们可以使用 LD ...

  8. 内网每一台电脑的外网ip是一样吗

    内网每一台电脑上网的IP地址是一样的,因为公网地址的稀缺性,所以内部上网是通过映射或者说叫端口复用将内部私有地址转换为公有地址进行上网的. 公有地址就是网关设备出口的地址,也可以说是路由器的出口地址, ...

  9. Solr之java实现增删查操作

    1.添加pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  10. 【转】Eureka集群

    Eureka作为SpringCloud的服务发现与注册中心,在整个的微服务体系中,处于核心位置.单一的eureka服务,显然不能满足高可用的实际生产环境,这就要求我们配置一个能够应对各种突发情况,具有 ...