hihoCoder 1233 Boxes(bfs)
来源:互联网 发布:网络订花送花 编辑:程序博客网 时间:2024/05/31 05:27
题目链接:hihoCoder 1233 Boxes
解题思路
确定n,bfs预处理出所有可达状态。
代码
#include <cstdio>#include <cstring>#include <vector>#include <queue>#include <algorithm>using namespace std;const int maxn = 10;const int maxs = 1e6;const int dir[2] = {1, -1};const int inf = 0x3f3f3f3f;typedef pair<int,int> pii;int N, E, V[maxn], P[maxn], T[maxn], vis[8][maxs];int idx(int* c) { int ret = 0; for (int i = 0; i < N; i++) ret = ret * N + c[i]; return ret;}void ridx(int* c, int s) { for (int i = N-1; i >= 0; i--) { c[i] = s % N; s /= N; }}bool judge (int w, int u, int p) { if (p < 0 || p >= N) return false; return w < T[p] && w == T[u];}void bfs (int n, int* v) { N = n; for (int i = 0; i < N; i++) V[i] = T[i] = i; int s = idx(T); v[s] = 0; queue<pii> Q; Q.push(make_pair(s, 0)); while (!Q.empty()) { int u = Q.front().first; int c = Q.front().second; Q.pop(); ridx(P, u); for (int i = 0; i < N; i++) T[i] = inf; for (int i = 0; i < N; i++) T[P[i]] = min(T[P[i]], V[i]); for (int i = 0; i < N; i++) { for (int j = 0; j < 2; j++) { if (judge(V[i], P[i], P[i]+dir[j])) { P[i] += dir[j]; int e = idx(P); if (v[e] == -1) { Q.push(make_pair(e, c+1)); v[e] = c+1; } P[i] -= dir[j]; } } } }}void init () { scanf("%d", &N); for (int i = 0; i < N; i++) scanf("%d", &V[i]); memcpy(P, V, sizeof(V)); sort(P, P + N); for (int i = 0; i < N; i++) T[i] = lower_bound(P, P + N, V[i]) - P; for (int i = 0; i < N; i++) P[T[i]] = i; //for (int i = 0; i < N; i++) printf("%d ", P[i]); //printf("\n"); E = idx(P);}int main () { int cas; scanf("%d", &cas); memset(vis, -1, sizeof(vis)); for (int i = 1; i < 8; i++) bfs(i, vis[i]); while (cas--) { init(); printf("%d\n", vis[N][E]); } return 0;}
0 0
- hihoCoder 1233 Boxes(bfs)
- HihoCoder 1233 Boxes BFS
- HihoCoder 1233 Boxes(bfs打表)
- HihoCoder 1233 Boxes (bfs 状压)
- hihocoder 1233 Boxes(bfs+状态压缩+hash表)
- hihocoder #1233 : Boxes 北京赛区(2015)网络赛(状态压缩+bfs)
- hihoCoder 1233 Boxes(状态压缩)
- hihocoder 1233 Boxes
- hihocoder 1233Boxes
- hihoCoder 1233 Boxes
- hihocoder Boxes 状压八进制bfs 加预处理
- hihoCoder 1233 Boxes(状态压缩 + bfs)——ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛
- hihoCoder 1233 Boxes 哈希+最短路
- hiho 1233 Boxes(状态压缩+BFS)
- uva 589 - Pushing Boxes(双重bfs)
- Pushing Boxes (poj 1475 嵌套bfs)
- poj 1475 Pushing Boxes(bfs)
- POJ 1475 Pushing Boxes(BFS)
- Java并发编程:并发容器之CopyOnWriteArrayList(转载)
- OAuth2.0认证和授权原理
- CentOS 6.5 下安装 Redis 2.8.7
- IOS初级:app的启动图像
- Android studio 中gradle的理解
- hihoCoder 1233 Boxes(bfs)
- cf#324 Div.2 Problem B Kolya and Tanya
- hihoCoder 1234 Fractal(水)
- linux 关机和重启命令
- 欢迎使用CSDN-markdown编辑器
- ios NSString的一些知识
- NSFileManager用法深入
- 使用void *封装简单对象与复杂对象并将之还原
- Intent的应用