hdu1067Gap(bfs)

《供应链金融风控模型设计:多维度数据整合与动态风险预警机制》 注:方案突出供应链金融「三流合一」(资金流、物流、信息流)的风控逻辑,通过多维度数据整合与动态预警,解决传统风控中中小企业信用评估难、链条风险传导监测滞后的问题。◦ 构建供应链拓扑图,计算「核心企业违约对上下游企业的影响系数」(如某电子厂商违约时,其前五大供应商的风险权重自动提升40%)• 区块链应用:将核心企业应付账款上链存证,防止「一票多融」欺诈(如某供应商用同一应收账款在多家银行融资)◦ 财务数据:核心企业审计报告、上下游企业纳税数据(增值税发票频次/金额) 阅读详情

hdu1067Gap
Gap
Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 1922 Accepted Submission(s): 978

Problem Description
Let’s play a card game called Gap.
You have 28 cards labeled with two-digit numbers. The first digit (from 1 to 4) represents the suit of the card, and the second digit (from 1 to 7) represents the value of the card.

First, you shu2e the cards and lay them face up on the table in four rows of seven cards, leaving a space of one card at the extreme left of each row. The following shows an example of initial layout.

Next, you remove all cards of value 1, and put them in the open space at the left end of the rows: “11” to the top row, “21” to the next, and so on.

Now you have 28 cards and four spaces, called gaps, in four rows and eight columns. You start moving cards from this layout.

At each move, you choose one of the four gaps and fill it with the successor of the left neighbor of the gap. The successor of a card is the next card in the same suit, when it exists. For instance the successor of “42” is “43”, and “27” has no successor.

In the above layout, you can move “43” to the gap at the right of “42”, or “36” to the gap at the right of “35”. If you move “43”, a new gap is generated to the right of “16”. You cannot move any card to the right of a card of value 7, nor to the right of a gap.

The goal of the game is, by choosing clever moves, to make four ascending sequences of the same suit, as follows.

Your task is to find the minimum number of moves to reach the goal layout.

Input
The input starts with a line containing the number of initial layouts that follow.

Each layout consists of five lines - a blank line and four lines which represent initial layouts of four rows. Each row has seven two-digit numbers which correspond to the cards.

Output
For each initial layout, produce a line with the minimum number of moves to reach the goal layout. Note that this number should not include the initial four moves of the cards of value 1. If there is no move sequence from the initial layout to the goal layout, produce “-1”.

Sample Input
4

12 13 14 15 16 17 21
22 23 24 25 26 27 31
32 33 34 35 36 37 41
42 43 44 45 46 47 11

26 31 13 44 21 24 42
17 45 23 25 41 36 11
46 34 14 12 37 32 47
16 43 27 35 22 33 15

17 12 16 13 15 14 11
27 22 26 23 25 24 21
37 32 36 33 35 34 31
47 42 46 43 45 44 41

27 14 22 35 32 46 33
13 17 36 24 44 21 15
43 16 45 47 23 11 26
25 37 41 34 42 12 31

Sample Output
0
33
60
-1

Source
Asia 2003(Aizu Japan)

Recommend
JGShining
反向bfs会爆,也许我写挫了?反正正着暴力一下就好了。。。

#include<bits/stdc++.h>
using namespace std;
string ed="1112131415161700212223242526270031323334353637004142434445464700";
int cnt=0;
unordered_map<string,int>mmp;
void swappos(string &tmp,int a,int b){
    swap(tmp[a<<1],tmp[b<<1]);
    swap(tmp[(a<<1)|1],tmp[(b<<1)|1]);
}
void ist(queue<string>&tmpq,string &tmp,int pos1,int pos2,int nwid){
    swappos(tmp,pos1,pos2);
    if(!mmp.count(tmp)){
        mmp[tmp]=nwid+1;
        tmpq.push(tmp);
        cnt++;
    }//else {cout<<"fuc"<<endl;}
}
int bfs(string st){
    mmp.clear();
    mmp[st]=0;
    queue<string>mq;
    mq.push(st);//cout<<st<<endl;
    while(!mq.empty()){
        string nw=mq.front();
        if(nw==ed)return mmp[nw];
        mq.pop();int nwid=mmp[nw];
        //cout<<nw<<endl;
        int pos[4],nxpos[4],f=0;
        memset(nxpos,-1,sizeof nxpos);
        for(int i=0;i<nw.length();i+=2){
            if(nw[i]=='0'){pos[f++]=i/2;}
        }
        for(int i=1;i<nw.length();i+=2){
            for(int j=0;j<4;j++){
                if(pos[j]>=1&&nw[i-1]==nw[pos[j]*2-2]&&nw[i]==nw[pos[j]*2-1]+1){
                    nxpos[j]=i/2;
                }
            }
        }
        for(int i=0;i<4;i++){
            if(nxpos[i]!=-1){
                ist(mq,nw,nxpos[i],pos[i],nwid);
                swappos(nw,nxpos[i],pos[i]);
            }
        }
    }
    return -1;
}
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        string st="";
        for(int i=1;i<=4;i++){
            st+="00";
            for(int j=1;j<=7;j++){
                int p;
                scanf("%d",&p);
                st+=to_string(p);
            }
        }//cout<<st<<endl;
        for(int i=1;i<st.length();i+=2){
            if(st[i]=='1'){
                swappos(st,(i-1)/2,(int)(st[i-1]-'1')*8);
            }
        }
        printf("%d\n",bfs(st));
    }
    return 0;
}

DeepSeek与豆包无缝对接:5分钟搞定智能周报自动化(附完整代码) 本文详细介绍了如何利用DeepSeek与豆包API,快速搭建一个智能周报自动化系统。通过整合豆包平台的工作流数据,并调用DeepSeek大模型进行深度分析与内容生成,该系统能在5分钟内自动抓取、分析多源信息,并生成结构清晰、富有洞察力的团队周报,显著提升工作效率。 阅读详情

相关推荐

4.3 Langfuse 集成实战:追踪 OpenAI、LangChain 和 LangGraph 应用

本文介绍了如何将Langfuse集成到不同类型的AI应用中,包括原生OpenAI、LangChain和LangGraph应用。主要内容包括: 两种集成模式:手动追踪(精确控制)和自动追踪(通过回调机制) 三种应用场景的集成方案: 原生OpenAI应用:使用langfuse.trace()手动记录对话流程、LLM调用和工具执行 LangChain应用:通过LangfuseCallbackHandler自动追踪Agent执行过程 LangGraph应用:与LangChain相同的自动追踪方式,可可视化节点和状态

yonggeit的博客 3032

HDU 1067 Gap bfs+hash

传送门:HDU1067 题意:给出表如第一个图,给出每个数,共有28个数,首先要将11,21,31,41放到前面去如第二个图,然后每次可以挑选一个空位把某个数放在此位置,但是要保证此数恰好是空位左边的数的后一个数,比如空位左边的数是42,则只能把43移到空位去。如果是47的话是没有后一个数的。 思路:将32个数做成个字符串然后hash记录,然后bfs搜索。估计用map应该也可以。 代码:

WA是一笔财富 471

Transformer 跨界物理建模:探索模拟动态物理系统方法与实践(PINN、流体力学、有限元)

是一个由 Nicholas Zabaras 团队开发的开源项目,托管于 GitHub,旨在将 Transformer 模型(最初在自然语言处理领域大获成功)应用于物理系统的建模与预测。该项目基于论文 ​*“Transformers for Modeling Physical Systems”*​(Neural Networks, 2022),探索了深度学习中的 Transformer 架构如何通过自注意力机制和 Koopman 嵌入来模拟动态物理系统。

源代码杀手的博客 1150

hdu-1067(最大独立集)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1068 题意:一个男生集合和一个女生集合,给出两个集合之间一一对应的关系,求出两个集合中最大独立集的点数。 思路:在二分图中,最大独立集的点数=顶点数-最大匹配数/2; 求二分图的最大匹配数需要用匈牙利算法(主要思想是求:增广路径,增广路径的数目=最大匹配数)。 参考文章:https://blo...

weixin_30734435的博客 175

搜索进阶------H - Gap

Let’s play a card game called Gap. You have 28 cards labeled with two-digit numbers. The first digit (from 1 to 4) represents the suit of the card, and the second digit (from 1 to 7) represents the va...

qq_36386435的博客 341

hdu 1067 bfs+hash

要求:4*8的表格里面有4*7个牌,牌是两位数,十位数不超过4 ,个位数不超过7,第一列刚开始是没有牌,然后把个位数为1的牌放在第1列,其中十位数为i的放在第i排,原来个位数为1的牌的地方留下4个空格。然后开始移动牌,若一个牌为i*10+j,j&lt;7,且右边有空格,则可将数字为i*10+j+1的牌放在该牌右边的空格内。问是否可以移动成下图,若可以,求出最小步数。 方法:bfs+hash ...

Irving0323的博客 329

HDU-1067

求最短路的问题还是用广度搜索,但问题在于判重不好办,不判重又会暴内存和超时,所以参考了一下别人写的哈希表进行判重。 将4*8的矩阵内的数字按照各自的权值相乘之后加起来对一个素数求模即可得到该状态所对应哈希表的下标。如果有重复就乘10再模一次。 #include #include #include using namespace std; struct node{ int

Phoenix_Wright的博客 560

HDU 1067 Gapbfs+哈希)

题面 Let's play a card game called Gap. You have 28 cards labeled with two-digit numbers. The first digit (from 1 to 4) represents the suit of the card, and the second digit (from 1 to 7) represents th...

Yi_Qing_Z的博客 267

HDU1067 GapBFS+MAP】

Gap Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 597    Accepted Submission(s): 327 Problem Description Let's play a card game

长风的专栏 2433

hdu 1067 Gap bfs+hash

Gap Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 431    Accepted Submission(s): 239 Problem Description Let's play a card ga

To be what you what to be! 1429

[HDU 1067] Gap BFS+哈希

每次将比空白格前面一个数字大一的数字移动到空白格,如果空白格前面数字的个位数是 7 或者空白格前面是空白格则不能移动到这里。

AcmHonor的专栏 770

HDU 1067 GapBFS

Let’s play a card game called Gap. You have 28 cards labeled with two-digit numbers. The first digit (from 1 to 4) represents the suit of the card, and the second digit (from 1 to 7) represents the va...

H4ppyD0g的博客 224

Gap HDU - 1067 BFS,模拟

Let's play a card game called Gap.You have 28 cards labeled with two-digit numbers. The first digit (from 1 to 4) represents the suit of the card, and the second digit (from 1 to 7) represents t...

dianzhenquan3519的博客 174

HDU - 1067 GapBFS+字符串压缩状态】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1067 一开始看题目的时候,最苦恼的就是题目存在的状态数太多,空格可能存放的数字有28个,那么可能的状态就有 28!种,这个数目显然很大,所以不知道如何做。但事实上并不用都遍历一遍,虽然我知道,只要四个空格左边的数都是个位数为7的数,那么就可以肯定无解,这样能减少不少耗时,但是我没想到能减这么多。 ...

Y390d的博客 279

hdu 1067 Gap bfs+hash

#include #include #include #include #include using namespace std; #define MAXN 1000007 struct node { int dis; __int64 m[5][9]; int posx[5]; int pos

1419

Gap HDU - 1067 BFS

暴力bfs + map判重#include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <cstring> #include <queue> #include <cmath> #include <map>using namespace std;struct node { char a

WsMiracle的博客 337

HDU 1067 Gap

HDU 1067 Gap Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) ProblemDescription -题目描述   Let's play a card game called Gap.   You have 28 card...

177

[kuangbin]专题二 搜索进阶 Gap HDU - 1067BFS】【哈希】

【题目描述】 Let’s play a card game called Gap. You have 28 cards labeled with two-digit numbers.The first digit (from 1 to 4) represents the suit of the card,and the second digit (from 1 to 7) represents t...

inv0ker的博客 375

hdu 1067 Gap+BFS+hash

题目大意:给一个4行8列方格,每个方格中保存一个两位数,该两位数的第十位为一个1~4的整数,个位为一个1~7的整数,经过有限步到达最终的状态如下所示: 刚开始时的第一列数位空,其中一组数据如下所示: 首先移动11,21,31,41到第一列对应的空位置,这四个值的移动不计入移动步数之内,如上图移动后的效果如下所示: 然后每次的移动就按照如下的规则进行移动:该空格左边为一个个位数不为7的

凌语小辉 750

HDU 1067 Gap(哈希+bfs

Gap Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 995    Accepted Submission(s): 524 Problem Description Let's play a card game cal

yasolx的博客 1222

HDU-1067-Gap(BFS+HASH)

Problem Description Let's play a card game called Gap. You have 28 cards labeled with two-digit numbers. The first digit (from 1 to 4) represents the suit of the card, and the second digit (from 1

青春无悔 1333

(源码)基于Visual Studio 2019的TSF输入法示例.zip

# 基于Visual Studio 2019的TSF输入法示例## 项目简介本项目源自微软早期的TSF(Text Services Framework)样例,整合了9个输入法工程和2个附加工程,旨在展示如何使用TSF框架实现输入法功能。项目使用Visual Studio 2019进行开发,源码位于src文件夹中,相关文档位于doc文件夹中。## 项目的主要特性和功能1. 输入法注册与激活展示了如何注册TSF输入法并激活输入法服务。2. 事件接收器与调试介绍了如何安装事件接收器以及调试输入法。3. 焦点事件处理演示了如何处理焦点事件并查看编辑记录。4. 语言栏设置展示了如何设置输入法语言并在语言栏中显示。5. 文本插入与编辑介绍了如何请求编辑会话以及使用客户端标识符进行文本插入。6. 键盘事件处理展示了如何注册输入法类别并安装键盘事件接收器。7. 输入组合处理介绍了如何创建输入组合并处理键盘事件。

UL 2683-2025 电加热系统用于地面和天花板安装.rar

UL 2683-2025 电加热系统用于地面和天花板安装.rar

上一篇: hdu3085Nightmare Ⅱ(双向BFS)
下一篇: hdu2102A计划(bfs)
IDrandom
博客等级 码龄12年 31粉丝 125原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值