今天通关zyf全家桶了,发个博客记录一下

这题是一道bfs,开始用的普通队列,一直WA,百思不得其解,问了一下少颖学长才明白这一题应该用优先队列,因为移动消耗不全为1

思路就是以s -> 1, 1 -> 2......n-1-> E的顺序进行BFS

下面上丑陋的代码

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <cctype>
#include <map>
using namespace std;const int dx[] = {1,-1,0,0};
const int dy[] = {0,0,1,-1};
const int maxn = 15+2;
int x[maxn], y[maxn];
int n, m, ans, p;
char maps[maxn][maxn];
bool vis[maxn][maxn];
map<char,int> cost;struct Point{int x, y, s;Point( int a, int b, int c ) : x(a), y(b), s(c) {};bool operator < ( Point a ) const { return s > a.s; }
};int scan() {int rec = 0;char ch;while( (ch = getchar()) ) {if( ch == '*' ) return -1;if( ch == 'S' ) return 0;if( ch == 'E' ) return 15;if( isdigit(ch) ) break;}rec += ch - '0';while( ( isdigit(ch = getchar()) ) ) {rec *= 10;rec += ch - '0';}return rec;
}void init() {ans = 0;p = 0;
}int bfs( int sx, int sy, int ex, int ey ) {priority_queue<Point> que;bool isget = false;que.push(Point(sx,sy,0));vis[sx][sy] = 1;while( !que.empty() && !isget ) {Point cur = que.top(); que.pop();int nx = cur.x, ny = cur.y, ns = cur.s;for( int i = 0; i < 4; i++ ) {int tx = nx + dx[i], ty = ny + dy[i];if( tx < 1 || ty < 1 || tx > n || ty > m ) continue;if( vis[tx][ty] || maps[tx][ty] == 'X' ) continue;vis[tx][ty] = 1;if( tx == ex && ty == ey ) {isget = 1;ans += ns + cost[maps[tx][ty]];break;}elseque.push( Point(tx, ty, ns+cost[maps[tx][ty]] ) );}}memset(vis, 0, sizeof(vis));while(!que.empty()) que.pop();
}void input() {int t1, t2, t3;char t;cin >> n >> m;for( int i = 1; i <= n; i++ )for( int j = 1; j <= m; j++ )cin >> maps[i][j];while( true ) {t1 = scan();if( t1 == -1 ) break;t2 = scan(); t3 = scan();if( t1 == 0 || t1 == 15 ) p--;p++;x[t1] = t2; y [t1] = t3;}x[p+1] = x[15]; y[p+1] = y[15];//用p来记录中间要通过多少个点,用0来储存起点,用15来临时储存终点,之后放在最末端
}void solve() {for( int i = 0; i <= p; i++ )bfs( x[i], y[i], x[i+1], y[i+1] );
}int main() {cost['0'] = 1;cost['#'] = 2;cost['T'] = 4;int T;cin >> T;while(T--) {init();input();solve();cout << ans << endl;}return 0;
}

校OJ P1220 -- zyf的现状相关推荐

  1. 校OJ P1139 -- 秦心的面具

    一道简单的01迷宫题,直接发代码 #include <iostream> #include <cstring> #include <cstdio> #include ...

  2. 厦门理工学院oj 1107-牲口棚的安全

    厦门理工学院oj 1107-牲口棚的安全 题目描述: Time Limit:1000MS Memory Limit:65536K Total Submit:211 Accepted:122 Descr ...

  3. java 杭电1237简单计算器

    简单计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. 我对ACM初学者想说的话

    1  算法学习 ACM算法的学习,一般看刘汝佳的系列书籍即可.初学者需要看的书是<算法竞赛入门经典>(俗称小白书),或者可以看<算法竞赛入门经典(第二版)>(俗称紫书).理论上 ...

  5. 记萌新赛的命题过程与踩气球过程

    从命题环节开始记起吧,踩气球部分放在后半段压轴. 大约$20$天以前,那天早上我刚下火车,得知今年比赛命题组组长是$xiang578$,老师发的命题人员名单中并没有我.出于对命题工作的好奇与热爱,我向 ...

  6. 用Python pyecharts v1.x 绘制图形(二):折线图、折线面积图、散点图、雷达图、箱线图、词云图

    文章目录 关于pyecharts 折线图 折线面积图 散点图 雷达图 箱线图 词云图 其他 关于pyecharts pyecharts是一个用于生成echart(百度开源的数据可视化javascrip ...

  7. 教育管理硕士选题大全||120个论文题目哪里找

    教育管理硕士毕业论文题目一1 Communication Issues for Learning English as a Second Language 2 我国大学本科课程结构探析 3 教育培训对 ...

  8. html表项点击跳转,html table 点击跳转

    一种可实时处理 O(1)复杂度图像去雾算法的实现. 在我博文的一系列的文章,有不少算法都于去雾有关,比如限制对比度自适应直方图均衡化算法原理.实现及效果.局部自适应自动色阶/对比度算法在图像增强上的应 ...

  9. Comet OJ 夏季欢乐赛 篮球校赛

    Comet OJ 夏季欢乐赛 篮球校赛 题目传送门 题目描述 JWJU注重培养学生的"唱,跳,rap,篮球"能力.于是每年JWJU都会举办篮球校赛,来给同学们一个切磋篮球技术的平台 ...

  10. 北邮OJ 1027. 16校赛-Archer in Archery

    时间限制 1000 ms 内存限制 65536 KB 题目描述 Archer(Emiya), also known as the red A, is famous for his talented s ...

最新文章

  1. 第十六届全国大学生智能车参赛与防疫承诺书
  2. Cortex - M3 中断和异常的区别
  3. 汇编中断知识之INT 1CH
  4. Android--xml布局文件中使用include
  5. 快速突破算法之位运算
  6. web中常用的20种字体 (share)
  7. win7如何安装IIS,三种方法任你选(图文教程)
  8. VS2017出现的神奇错误HRSULT:0x80041FE2
  9. Word自动生成目录的方法
  10. android 程序启动监听,监听开机自动启动应用
  11. 微信公众平台一直限制配置失败-106
  12. 使用ZBrush软件的画布功能有什么技巧吗?
  13. 用计算机高新证成都入户,关于2021年成都高新区小升初“报名电脑随机录取”的公告发布!...
  14. 不会这 9 种常用的软件工具!你敢说你会网络安全?
  15. python 入门零碎知识点
  16. 那些闪光的思想和智慧-让自己慢下来(36)
  17. 2007年下半年全国计算机技术与软件专业技术资格(水平)考试湖南省报考工作实施细则...
  18. [历朝通俗演义-蔡东藩-前汉]第005回 信佞臣尽毁诗书 筑阿房大兴土木
  19. Mac上FDM替代迅雷
  20. mate10android系统通知,老用户的福音!Mate 10用户也能更新EMUI 10了

热门文章

  1. 台式计算机 按键盘字母键 没反应6,电脑键盘数字键失灵-键盘字母上面数字键有的失灵不能用怎么?键盘字母上面数字键有的失灵 爱问知识人...
  2. html5在不同浏览器兼容,HTML5浏览器兼容性解决方案
  3. PhantomJS not found on PATH
  4. haxm device is not found
  5. SMT操作手册V1.0 模板
  6. 浏览器解析jsx_jsx的本质
  7. 服务器违反了协议,IMAP协议违规:未知消息的EXPUNGE响应?
  8. LabWindows操作SQL SERVER
  9. sql注入搞事情(连载一)
  10. shc文件wegt服务器,Shc如何配置_Shc安装问题-华为云