Usaco Training Section 4.4 Shuttle Puzzle

news/2025/1/12 1:00:03/

要将W...W_B...B变成B...B_W...W,每次可以1、交换空格和相邻格;2、你可以把一个棋子跳过一个(仅一个)与它不同色的棋子到达空格。用最少步数,打印出每次移动的棋子(最小的一组解)

直接dfs,要优化。很明显W向右,B向左,每一步有4种情况:1.WB_->_BW;2.W_->_W;3._B->B_;4._WB->BW_。要按照这个顺序判断,这样就直接是最小的一组解了。

#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define inf 2147483647
#define mp make_pair
#define pii pair<int,int>
#define pb push_back
using namespace std;inline int read(){int x=0;char c=getchar();while(c<'0'||c>'9') c=getchar();while(c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x;
}int n,b[30];
bool f;
stack<int> s;inline void dfs(int a[],int p){f=1;for(int i=1;i<=n;++i) if(a[i]!=0){f=0;break;}if(a[n+1]==2){for(int i=n+2;i<=2*n+1;++i) if(a[i]!=1){f=0;break;}if(f){s.push(p);return;}}if(p>2&&a[p-2]==1&&a[p-1]==0){swap(a[p],a[p-2]);dfs(a,p-2);if(f){s.push(p);return;}swap(a[p],a[p-2]);}if(p>1&&a[p-1]==1){swap(a[p],a[p-1]);dfs(a,p-1);if(f){s.push(p);return;}swap(a[p],a[p-1]);}if(p<=2*n&&a[p+1]==0){swap(a[p],a[p+1]);dfs(a,p+1);if(f){s.push(p);return;}swap(a[p],a[p+1]);}if(p<2*n&&a[p+2]==0&&a[p+1]==1){swap(a[p],a[p+2]);dfs(a,p+2);if(f){s.push(p);return;}swap(a[p],a[p+2]);}
}int main()
{freopen("shuttle.in","r",stdin);freopen("shuttle.out","w",stdout);n=read();for(int i=1;i<=n;++i) b[i]=1;b[n+1]=2;dfs(b,n+1);int tot=1;s.pop();printf("%d",s.top());s.pop();while(!s.empty()){++tot;if(tot%20!=1) printf(" ");printf("%d",s.top()),s.pop();if(tot%20==0) puts("");}if(tot%20!=0) puts("");return 0;
}

 


http://www.ppmy.cn/news/869730.html

相关文章

MapReduce中Shuttle过程的理解

MapReduce中Shuttle过程的理解--转自&#xff1a;http://langyu.iteye.com/blog/992916 Shuffle过程是MapReduce的核心&#xff0c;也被称为奇迹发生的地方。要想理解MapReduce&#xff0c; Shuffle是必须要了解的。我看过很多相关的资料&#xff0c;但每次看完都云里雾里的绕着…

USACO 4.4 Shuttle Puzzle(数学)

2015-03-25 22:21:59 思路&#xff1a;一道找规律的题... 一开始没啥思路&#xff0c;看了别人博客才知道... N3&#xff1a;3 5 6 4 2 1 3 5 7 6 4 2 3 5 4 差&#xff1a; 2 1 -2 -2 -1 2 2 2 -1 -2 -2 1 2 -1 N4&#xff1a;4 6 7 5 3 2 4 6 8 9 7 5 3 1 2 4 6 8 7 5 3 4 6…

R语言基于MASS包中的shuttle数据集以及neuralnet包构建神经网络模型

R语言基于MASS包中的shuttle数据集以及neuralnet包构建神经网络模型 目录 R语言基于MASS包中的shuttle数据集以及neuralnet包构建神经网络模型

Shuttle ESB(三)——架构模型介绍(2)

上一篇文章中&#xff0c;介绍了Shuttle ESB架构模型中的三个重要部分。 今天&#xff0c;我们继续介绍剩余的三个内容&#xff1a;模式和消息路由。 四、模式 Request/Response(请求/响应模式) 对基于Request/Response消息机制的内容。你能够看WiKi的一些文章&#xff1a;http…

P1607 [USACO09FEB]Fair Shuttle G

P1607 [USACO09FEB]Fair Shuttle G 题意 现在又n头牛&#xff0c;分成了k组&#xff0c;每一组有三个值&#xff0c;s、e、m&#xff0c;分别表示&#xff0c;这一组牛从s到e&#xff0c;并且这一组里面有m头牛&#xff0c;现在有一辆车&#xff0c;一次只能装c头牛&#xff…

Codeforces Gym 101521A Shuttle Bus

题意&#xff1a;给定一个2*N的方格&#xff0c;从左上角开始走&#xff0c;有些格子不能走&#xff0c;问能否一次遍历所有能走的方格 再加上&#xff08;2&#xff0c;2&#xff09;点不能走&#xff0c;这几种情况&#xff1b; 应该差不多了&#xff0c; 主要是 找奇偶关系…

Shuttle Puzzle[USACO]

开始试图找挪动的规律&#xff0c;找了半天&#xff0c;成功的挪动规律虽然没找到&#xff0c;但发现了失败的规律。如果出现两个连续的W或B&#xff0c;而它的连续没能连续到边界&#xff0c;则铁定失败。如&#xff1a;...W..BB..W.. 或者 ..B..WW..B.. 于是&#xff0c;可以…

初步了解Shuttle ESB

ESB&#xff1a;EnterpriseService Bus&#xff0c;即企业服务总线。它是传统中间件技术与XML、Web服务等技术结合的产物&#xff1b;从面向服务体系架构发展而来。 ESB採用了“总线”这种模式来管理和简化应用之间的集成拓扑结构&#xff0c;以广为接受的开放标准为基础来支持…