1321. Robot
来源:互联网 发布:手机三维扫描软件 编辑:程序博客网 时间:2024/06/08 10:08
每个周五都深深地打击了我幼小的心灵...
一个错误在考场卡一个小时,回宿舍1分钟就看出,妈的真是不可言状的伤啊...
上午不会做,下午听不懂,小学期有没有这么伤人啊...
1321. Robot
用链表的形式储存的话大小小于 40000个int,因为每个点最多只有4个相邻点!~
最后用dijkstra 求最短路径, 记得加上起点的权值~
好像还可以用堆优化,没用过stl中的堆,先记录下,过几天学习下
0.4,不算太快...
#include<stdio.h>#include<vector>#include<cstring>using namespace std;int r , c;struct POINT{ int x, y;};POINT s , e;struct PAIR{ int id , cost;};vector<PAIR> v[10001]; #define MAX 999999int dis[10001];void djs(int source,int n){ bool found[10001]; memset(found, 0, sizeof(found)); int i , j; for(i = 1; i<v[source].size(); i++) dis[v[source][i].id] = v[source][i].cost; found[source] = 1; dis[source] = 0; int w; for(i = 0; i < n; i++){ int min = MAX;for(j = 0; j< n; j++)if(!found[j]){if(dis[j] < min) { min = dis[j];w = j;} }found[w] = true;for(j = 1; j < v[w].size(); j++)if(!found[v[w][j].id]){if(min + v[w][j].cost < dis[v[w][j].id])dis[v[w][j].id] = min + v[w][j].cost;} }}inline void build_graph(int cnt){PAIR p;int i;for(i = 0; i < cnt; i++){if((i+1)%c!=0) { p.cost = v[i+1][0].cost;p.id = i + 1;v[i].push_back(p);}if((i + c) < r * c){ p.cost = v[i+c][0].cost;p.id = i + c; v[i].push_back(p);}if((i%c)!=0 && i > 0){ p.cost = v[i-1][0].cost;p.id = i - 1;v[i].push_back(p);}if((i - c) > -1){ p.cost = v[i-c][0].cost;p.id = i - c; v[i].push_back(p);}} }int main(){ //freopen("in.txt", "r", stdin); int cas; scanf("%d", &cas); while(cas--){ int cnt = 0; scanf("%d%d", &r, &c);int i , j;for(i = 0; i< r * c; i++) v[i].clear();PAIR p;while(cnt < r * c){ scanf("%d", &p.cost); p.id = cnt; v[cnt].push_back(p);cnt++;}scanf("%d%d%d%d", &s.x, &s.y, &e.x, &e.y);build_graph(cnt);int a = (s.x - 1) * c + s.y - 1;int b = (e.x - 1) * c + e.y - 1;for(i = 0; i< cnt; i++) dis[i] = MAX;djs(a , r * c);printf("%d\n", dis[b] + v[a][0].cost ); }}
- 1321. Robot
- 1321. Robot
- 1321. Robot
- Sicily 1321. Robot
- 1321. Robot (dijkstra)
- SOJ 1321. Robot
- sicily 1321. Robot
- sicily 1321.Robot
- Sicily 1321. Robot
- sicily 1321. Robot
- Robot
- robot
- robot
- Robot
- Robot
- 第十六周:[Sicily]1321. Robot
- Sicily 1321. Robot (不一样的宽搜)
- Mobile Robot
- Java实践之路目录索引
- rails rmagic安装问题 解决 (jasonchi)
- WebDriver入门指南
- 7.3节点流
- 认识 Flash Builder的运行时共享库(Run-time Shared Libraries)
- 1321. Robot
- 上班族创业前的思考:如何马上入手?
- window.open()理解以及如何用window.open()实现窗口关闭
- 7.4过虑流与包装类
- bitset 用法整理
- 清除键盘缓冲区
- 鬼影3样本MBR详细注释(好吧,继续友情赠送磁盘布局..)
- 十六 进制CString 型字符串转为相应的字节型数据
- IBM DB2 数据库使用小技巧