搜索专题: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. [The Annotated Transformer] Iterators

    Iterators 对torchtext的batch实现的修改算法原理 Batching matters a ton for speed. We want to have very evenly di ...

  2. Windows下如何安装Redis

    Redis可以从下面的github上面下载,当前的下载版本为3.2.100版本 https://github.com/MicrosoftArchive/redis/releases 这边都是64位的链 ...

  3. 使用 sed 命令查找和替换文件中的字符串的 16 个示例

    当你在使用文本文件时,很可能需要查找和替换文件中的字符串.sed 命令主要用于替换一个文件中的文本.在 Linux 中这可以通过使用 sed 命令和 awk 命令来完成. 在本教程中,我们将告诉你使用 ...

  4. heigth innerheigt outerheight详解

    height() :height innerHeight(): height + paddingouterHeight(): height + padding + border outerHeight ...

  5. spring boot统一异常页面

    只需要创建一个类就可以了 package com.ulic.gis.securityManage.controller; import java.util.Map; import javax.serv ...

  6. 浏览器端-W3School-JavaScript:JavaScript Number 对象

    ylbtech-浏览器端-W3School-JavaScript:JavaScript Number 对象 1.返回顶部 1. JavaScript Number 对象 Number 对象 Numbe ...

  7. 在 Android 中进程的级别有哪些?

    a) Foreground processb) Visible processc) Service processd) Background processe) Empty process

  8. 使用ViewPager实现广告自动轮播的效果

    package com.loaderman.viewpgerlunbodemo; import android.os.Bundle; import android.os.Handler; import ...

  9. Python中的super()用法

    Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this,比如:C#),用于传递对象本身,而在调用的时候则不 必显式传递,系统会自动传递. 今天我们介绍的主角是su ...

  10. nginx禁止指定的user_agent访问

    #禁止指定user_agent(浏览器标识)if ($http_user_agent ~ 'curl|baidu'){ return 403;} if ($http_user_agent ~* 'cu ...